您好我有以下代码
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
string searchText = "find this text, and some other text";
string replaceText = "replace with this text";
String query = "%SystemDrive%";
string str = Environment.ExpandEnvironmentVariables(query);
string filePath = (str + "mytestfile.xml");
StreamReader reader = new StreamReader( filePath );
string content = reader.ReadToEnd();
reader.Close();
content = Regex.Replace( content, searchText, replaceText );
StreamWriter writer = new StreamWriter( filePath );
writer.Write( content );
writer.Close();
}
}
}
替换找不到搜索文本,因为它位于单独的行上,如
找到这个文本,
和其他一些文字。
我如何编写正则表达式,以便找到文本。
答案 0 :(得分:4)
要搜索任何空格(空格,换行符,制表符......),您应该在正则表达式中使用\ s:
string searchText = @"find\s+this\s+text,\s+and\s+some\s+other\s+text";
当然,这是一个非常有限的例子,但你明白了......
答案 1 :(得分:1)
为什么要尝试使用正则表达式进行简单搜索和替换?只需使用:
content.Replace(searchText,replaceText);
您可能还需要在字符串中添加'\ n'以添加换行符,以便匹配替换。
尝试将搜索文本更改为:
string searchText = "find this text,\n" +
"and some other text";
答案 2 :(得分:0)
这是针对您的具体问题的附注,但您正在重新发明框架为您提供的一些功能。试试这段代码:
static void Main(string[] args)
{
string searchText = "find this text, and some other text";
string replaceText = "replace with this text";
string root = Path.GetPathRoot(Environment.SystemDirectory);
string filePath = (root + "mytestfile.xml");
string content = File.ReadAllText(filePath);
content = content.Replace(searchText, replaceText);
File.WriteAllText(filePath, content);
}