2010-09-12 62 views
1

我想找到從給定的文本第一個字匹配,並與另一個詞替換,使用正則表達式。查找第一個字從給定的文本匹配 - 正則表達式

考慮以下字符串作爲示例文本

哪種是你的項目?我想,該項目是不是一個字符串,如果是這樣 你可以重寫ToString()方法中 項目類,並使用了賈揚的 代碼。

我想搜索第一個「item」單詞並將其替換爲文本「hello」。請記住,我只想替換第一個「項目」字而不是全部。

因此,以上文本的輸出將如下所示。

哪種是你打招呼?我想,該項目是不是一個字符串,如果是這樣 你可以重寫ToString()方法中 項目類,並使用了賈揚的 代碼。

我使用C#編程來做到這一點,如果可能,我寧願使用Regex。

任何人都可以請幫我這。

回答

4

您可以使用Regex.Replace()方法與第三個參數(最大替換):

Regex rgx = new Regex("item"); 
string result = rgx.Replace(str, "hello", 1); 

看到它在ideone

(雖然在這種情況下,你並不真正需要的正則表達式,因爲你是尋找一個常數。)

+0

感謝的人,你救了我很多時間。 – 2010-09-12 04:36:41

+0

當字大寫/小寫不匹配時,你知道如何替換字符串嗎? – 2010-09-12 05:27:51

+0

@Jordon你可以編譯正則表達式是不區分大小寫的(例如:'new Regex(「item」,RegexOptions.IgnoreCase);' – NullUserException 2010-09-12 17:59:49

1

如果你打開非正則表達式的替代品,你可以做這樣的事情

public static string ReplaceOnce(this string input, string oldValue, string newValue) 
{ 
    int index = input.IndexOf(oldValue); 
    if (index > -1) 
    { 
     return input.Remove(index, oldValue.Length).Insert(index, newValue); 
    } 

    return input; 
} 

//

Debug.Assert("bar bar bar".ReplaceOnce("bar", "foo").Equals("foo bar bar")); 
+0

謝謝,你知道如何忽略大小寫嗎? – 2010-09-12 05:56:44

+0

@Jordon,IndexOf has一個接受'StringComparison'枚舉的重載,你可以使用該重載來指定文化/套接字匹配規則(例如'StringComparison.InvariantCultureIgnoreCase') – 2010-09-12 12:52:53

+0

謝謝安東尼,感謝你的幫助 – 2010-09-12 13:02:10

相關問題