2017-02-26 58 views
1

我正在尋找代碼來有效地替換包含數字的字符串。然而,這個數字可以是或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 student在這裏)。

可能會將其捕獲爲具有指定字符(如[0-9,。,])的字符串。

+0

目前尚不清楚替代規則是什麼。你想用預定義的值替換每個現有的號碼嗎? (0.5或1成爲1.5)還是有不同的規則? – Steve

+0

對不起,我沒有很好地解釋。我想替換下面列出的格式「@」\ d + \。\ d +「;」的任何值。我想要替換它的值是從跟蹤欄的.Value屬性接收的。 此刻此刻: 'string SelectedValue = trkTerrainQualityVal.Value.ToString(); string pattern = @「\ d + \。。d +」; string search =「clipmapScale:r =」; var m = Regex.Replace(search,pattern,SelectedValue);' – Lewis

回答

2

如果你只是想更換新的號(在發現價值沒有計算)的字符串內的每個十進制數那麼它就是一個簡單的正則表達式表達,只需一個電話,以取代

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+"; 
+0

是的,我現在明白了,謝謝! :) – Lewis

1

您可以使用Regular Expression用於這一目的。想象一下,你想用#個字符替換所有的十進制數字。你可以使用下面的代碼片段。

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