2014-11-05 41 views
1

我想用別的東西替換格式爲[@ID = ###]的字符串中的值。該字符串可以有[@ID = ###]和其他東西,但它是我關心的括號內的位。例如:用別的東西替換字符串的一部分

[@ ID = 3671818] 2

爲此,我想只替換 「[@ ID = 3671818]」 - 的 「2」 需要保持原樣。

我想嘗試這樣的:

value = value.Replace().Insert(); 

但我知道這是行不通的。有沒有辦法在一行代碼中執行此操作,還是需要使用各種字符串變量?在中,我是否需要一個startIndex變量和endIndex變量來首先刪除「[@ ID =」和「]」部分,以便我可以定位它們之間的內容?

+0

聽起來像你正在爲自己做很多工作。爲什麼不創建一個新的字符串並在其後面添加「+2」而不是刪除和預先添加字符? – 2014-11-05 20:07:37

+0

@BobKaufman我不確定我知道你的意思是...?你的意思是我應該在某個時候使用Split()? – 2014-11-05 20:09:11

+0

如果您只想創建一個以「+2」結尾的字符串,那麼爲什麼不這樣做,而不是從字符串中刪除字符並插入新字符? – 2014-11-05 20:18:59

回答

6

這是正則表達式是:括號(包括括號)內

string str = @"[@ID=3671818]+2"; 
var newStr = Regex.Replace(str, @"\[.*\]", "TEST"); 
Console.WriteLine(newStr); 
//newStr = "TEST+2" 

一切都將與您的替換字符串替換。

如果你想保留括號,你會使用

@"(?<=\[).*(?=\])" //newStr = "[TEST]+2" 

它採用向前看符號和lookbehinds找到括號內的文字,並替換文本。

就學習Regex而言,這裏有很多指導,我更喜歡RegExr來測試它們。

+0

這對我來說很好。謝謝! – 2014-11-05 20:54:00