我正在尝试通过找到它们并用\ n +短语替换它们来确保短语列表从它们自己的行开始。例如
your name: joe your age: 28
变为
my name: joe
your age: 28
我有一个带有短语的文件,我拉动并循环并进行替换。除非某些短语中有2个单词,否则我使用\ b来表示短语的开始和结束位置。
这似乎不起作用,任何人都知道为什么?
示例 - 字符串是'名称:xxxxxx'未被编辑。
output = output.Replace('\b' + "Name" + '\b', "match");
答案 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");