如何替换字符串

时间:2015-06-28 00:33:06

标签: c# string

假设我有一个包含以下内容的文本文件:

longtextwith some space and unicode escape like this \u003ca

我想替换\u003c的所有实例/出现/序列,而忽略了a尾随的事实。像“查找一系列字符的所有实例,忽略案例并替换它”之类的东西。

我已经尝试过但没有任何反应:

using (var sr = new StreamReader("1.txt"))
{
    string result = sr.ReadToEnd();

    result = Regex.Replace(result, @"\b\\u003c\b", "<", RegexOptions.IgnoreCase);
}

这些变体也没有产生我想要的结果:

result = Regex.Replace(result, @"\\u003c", "<", RegexOptions.IgnoreCase);
result = Regex.Replace(result, "\u003c", "<", RegexOptions.IgnoreCase);
result = Regex.Replace(result, "\b\\u003c\b", "<", RegexOptions.IgnoreCase);

在Lua中,这有效:str = string.gsub(str, '\\u003e', '>')

在这种情况下,我对.NET框架提供的用于unicode,ascii等的编码和解码的选项不感兴趣。

2 个答案:

答案 0 :(得分:2)

为什么不使用String.Replace

string str = inputString.Replace("\\u003c", "<");

如果您想要不区分大小写的替换,请尝试以下操作:

var regex = new Regex(@" \\u003c", RegexOptions.IgnoreCase);
string str = regex.Replace(inputString, "<");

答案 1 :(得分:1)

你的模式应该是@&#34; \ b \ u003c&#34;。由于您使用@定义它,因此在u003c前面不需要双反斜杠。此外,\ b表示单词边界,因此您当前的模式与尾随a不匹配,因为它不在单词边界上。

有关进一步的参考,请查看RegEx.Escape方法,该方法有助于确保您的模式正确转义。如果您经常使用正则表达式,请帮自己一个忙,并查看www.RegExBuddy.com。我几年前购买它并喜欢它。它是一个很棒的工具,启动成本低廉。