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

时间:2017-02-26 09:19:59

标签: c# .net

我正在寻找有效替换的代码,一个包含数字的字符串。但是,这些数字可以是0.502.20之间或之间,增量为2.所以0.500.520.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,。,]。

2 个答案:

答案 0 :(得分:2)

如果你只想用一个新数字替换字符串中的每个十进制数字(不对找到的值进行计算)那么它是一个简单的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+";

答案 1 :(得分:1)

您可以将Regular Expression用于此目的。想象一下,您想要用#个字符替换所有十进制数字。您可以使用以下代码段。

        string input = "this0.4is7.8some0.89input";
        Regex regex = new Regex(@"\d+\.\d+");
        var s =regex.Replace(input, "#");
        Console.WriteLine(s);