我如何替换c#string.replace中的确切短语

时间:2014-10-10 12:11:19

标签: c# string replace

我正在尝试通过找到它们并用\ n +短语替换它们来确保短语列表从它们自己的行开始。例如

your name: joe    your age: 28 

变为

my name: joe  
your age: 28

我有一个带有短语的文件,我拉动并循环并进行替换。除非某些短语中有2个单词,否则我使用\ b来表示短语的开始和结束位置。

这似乎不起作用,任何人都知道为什么?

示例 - 字符串是'名称:xxxxxx'未被编辑。

output = output.Replace('\b' + "Name" + '\b', "match");

3 个答案:

答案 0 :(得分:1)

使用正则表达式,说明任意数量的单词的空格数:

using System.Text.RegularExpressions;

Regex re = new Regex("(?<key>\\w+(\\b\\s+\\w+)*)\\s*:\\s*(?<value>\\w+)");
MatchCollection mc = re.Matches("your name: joe    your age: 28 ");

foreach (Match m in mc) {
    string key = m.Groups("key").Value;
    string value = m.Groups("value").Value;

    //accumulate into a list, but I'll just write to console
    Console.WriteLine(key + " : " + value);
}

以下是一些解释:

  • 假设您想要在冒号左侧的内容(:)称为,右侧是什么 -
  • 这些键/值对至少分隔一次空格。因此,价值只有一个字(否则我们会有歧义)。

上面的正则表达式使用命名组,使代码更具可读性。

答案 1 :(得分:0)

得到它

for (int headerNo=0; headerNo<headersArray.Length; headerNo++) 
{ 
    string searchPhrase = @"\b" + PhraseArray[headerNo] + @"\b"; 
    string newPhrase = "match"; 
    output = Regex.Replace(output, searchPhrase, newPhrase); }

答案 2 :(得分:-1)

按照示例,您可以这样做:

output = output.Replace("your", "\nyour");