2010-09-12 116 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

相关问题