C# 替换a";新行“;C中带有正则表达式的char#
我想定位文本文件中包含“字母或数字”、“新行”、“字母或数字”序列的每个字符串,然后用“空格”替换“新行” 这就是我迄今为止所尝试的:C# 替换a";新行“;C中带有正则表达式的char#,c#,regex,C#,Regex,我想定位文本文件中包含“字母或数字”、“新行”、“字母或数字”序列的每个字符串,然后用“空格”替换“新行” 这就是我迄今为止所尝试的: private void button3_Click(object sender, EventArgs e) { string pathFOSE = @"D:\Public\temp\FOSEtest.txt"; string output = Regex.Replace(pathFOSE, @"(?<=\w)\n(?=\w)
private void button3_Click(object sender, EventArgs e)
{
string pathFOSE = @"D:\Public\temp\FOSEtest.txt";
string output = Regex.Replace(pathFOSE, @"(?<=\w)\n(?=\w)", " ");
string pathNewFOSE = @"D:\Public\temp\NewFOSE.txt";
if (!System.IO.File.Exists(pathNewFOSE))
{
// Create a file to write to.
using (System.IO.StreamWriter sw = System.IO.File.CreateText(pathNewFOSE))
{
}
File.AppendAllText(pathNewFOSE, output);
}
}
private void按钮3\u单击(对象发送者,事件参数e)
{
字符串pathFOSE=@“D:\Public\temp\FOSEtest.txt”;
string output=Regex.Replace(pathFOSE,@)(?您需要使用正向查找
Regex.Replace(pathFOSE, @"(?<=\w)\n(?=\w)", " ");
^
在Windows中,换行符通常看起来像\r\n
(插入符号返回+换行符)。
因此,可以将前面和后面带有字母数字的换行符与匹配
string output = Regex.Replace(pathFOSE, @"(?<=\w)\r\n(?=\w)", " ");
如果各种操作系统或程序混合使用换行符,则可以使用
string output = Regex.Replace(pathFOSE, @"(?i)(?<=[a-z0-9])(?:\r\n|\n|\r)(?=[a-z0-9])", " ");
用于新行的字符(个)在您的操作系统上。不确定您的意思是什么,但我将\n
替换为环境。换行符
,以获得相同的结果。我想我需要知道为什么要先在文本文件中写入路径。我仍然只得到一个写有路径的文本文件。我想还有一个问题,谢谢您的帮助这是一个深思熟虑的@”(?感谢您提供了这个详细的答案,一旦我理解了为什么替换发生在路径字符串上,而不是它导致的文件上,这将非常有帮助。您需要先读文件:var contents=file.ReadAllText(pathFOSE);
。并对内容执行替换,然后将修改后的内容写入新文件。好的,我想您只需要ReadAllText
。我的思考速度比键入快了一点:)不幸的是,仍然是相同的结果是的,刚刚意识到我做了什么…请告诉我正确的方法;)
string output = Regex.Replace(pathFOSE, @"(?i)(?<=[a-z0-9])\r\n(?=[a-z0-9])", " ");
string output = Regex.Replace(pathFOSE, @"(?i)(?<=[a-z0-9])(?:\r\n|\n|\r)(?=[a-z0-9])", " ");
var pathFOSE = @"D:\Public\temp\FOSEtest.txt";
var contents = File.ReadAllText(pathFOSE);
var output = Regex.Replace(contents, @"(?i)(?<=[a-z0-9])(?:\r\n|\n|\r)(?=[a-z0-9])", " ");
var pathNewFOSE = @"D:\Public\temp\NewFOSE.txt";
if (!System.IO.File.Exists(pathNewFOSE))
{
File.WriteAllText(pathNewFOSE, output);
}