我有一个这样的字符串:
this'is'my'
test'
string'
我需要在'。
上使用Regex进行查找和替换我需要替换'with'\ r \ n,但不能更改已经有行间距的其他行,基本上看起来像这样:
this'
is'
my'
test'
string'
我无法移除所有“\ r \ n”,然后将它们全部更改,因为我需要快速并且只需要更改需要更改的内容。
目前我这样做:
var EscapeCharactor = "?"
var LineEndCharactor = "'"
string result = Regex.Replace(data, @"(([^\" + EscapeCharactor + "]" + LineEndCharactor + @"[^\r\n|^\r|^\n])|(\" + EscapeCharactor + @"\" + EscapeCharactor + LineEndCharactor + "[^\r\n|^\r|^\n]))", "$1\r\n");
return ediDataUnWrapped;
但它正在创造这个:
this'i
s'm
y'
test'
string'
这是否可能只改变某些字母并且不包括额外的字母,或者我将不得不管理删除所有\ r \ n然后将其添加到所有这些字母?
答案 0 :(得分:1)
这是一种非正则表达式方法:
string testString = @"this'is'my'
test'
string'";
var split = testString.Split(new[]{"'"}, StringSplitOptions.RemoveEmptyEntries)
.Select(s => s.Trim() + "'");
testString = string.Join(Environment.NewLine, split);
答案 1 :(得分:0)
如果你真的想使用正则表达式(Tim的解决方案看起来更好)
string test = "this'is'my'test'\r\nstring'";
test = Regex.Replace(test,@"[\r\n]","");
Regex rgx = new Regex("(\\w')([\\\\r]?[\\\\n]?)", RegexOptions.IgnoreCase);
var rep = rgx.Replace(test,"$0\r\n");
Console.WriteLine(rep);
结果
this'
is'
my'
test'
string'
// KH
答案 2 :(得分:0)
另一种解决方案有两个简单String.Replace()
:
using System;
public class Program
{
public static void Main()
{
string s = "this'is'my'test'\r\nstring'\r\n";
s = s.Replace(Environment.NewLine, String.Empty); // remove /r/n
s = s.Replace("'", "'" + Environment.NewLine); // replace ' by ' + /r/n
Console.WriteLine(s);
}
}
输出:
this'
is'
my'
test'
string'