c# - 替换包含文件中随机数的字符串

标签 c# .net

我正在寻找有效替换包含数字的字符串的代码。但是,数字可以是 0.502.20 之间或介于两者之间,增量为 2。因此 0.500.52, 0.62....等

为了更好地解释,我的程序正在替换配置(文本)文件中的行。这是我如何将它用于程序其他部分的示例。由于它链接到轨迹栏控件,这意味着使用单个选定值搜索数百个不同的值,这当然是非常低效的。我只是在寻找一种更有效的方法来替换值。这是前面的示例,它插入了 3 个可能值之一:

ReWriteFile = ReWriteFile
   .Replace("  clipmapScale:r=0.5", "  clipmapScale:r=1.5")
   .Replace("  clipmapScale:r=1", "  clipmapScale:r=1.5");

这个控件只有 3 个可能的值(0.5、1.0、1.5),但我的另一个控件有 85 个可能的值。

如果有一种方法可以从字符串中获取数字并替换它们并写回它们。我对 C# 不是很流利,因为我刚开始学习它(这里是 Uni 学生)。

也许可以将其捕获为具有指定字符(如 [0-9,.,])的字符串。

最佳答案

如果您只想用一个新数字替换字符串中的每个十进制数字(不计算找到的值),那么它是一个简单的 Regex 表达式,只需调用一次 Replace

string newValue = "1.5";
// Matches any number followed by a dot and then another number
string pattern = @"\d+\.\d+";
string search = "..... clipmapScale:r=0.5 clipmapScale:r=1.0 .....";
var m = Regex.Replace(search, pattern, newValue);
Console.WriteLine(m);

当然,如果你想将匹配的部分限制为只有 clipmapScale 文本之后的数字你可以更改为

string newValue = "clipmapScale:r=1.5";
string pattern = @"clipmapScale:r=\d+\.\d+";

关于c# - 替换包含文件中随机数的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42466738/

相关文章:

c# - 如何在 C# 中使用热键启动程序?

c# - 如何在 C# 中调整图像大小同时保持高质量?

c# - 在 C# 中获取一个范围内的随机持续时间

c# - 令人费解的 Enumerable.Cast InvalidCastException

c# - 使用 C# 删除换行符

c# - 将每个方法放在单独的文件中是一种不好的做法吗?

C# 方法调用无法将实现接口(interface)的类强制转换为所述接口(interface)

c# - 在 WPF 中同步 ViewModel

c# - HttpWebRequest 截断带有非英文符号的 URL

c# - 将卢比符号添加到我的 gridview 列