C#检测字符串中的最后一个`Enter`

时间:2017-05-23 16:58:06

标签: c# regex

我有很多带有以下模式的字符串(格式):

aaaaaaa aa aa
bbbbbbbbbbbbbbb bb bbbbb bbb bb
ccccc c cc ccc 

XXXX XX 
zzzzzz zzz

OR:

aaaaaaa aa aa
bbbbbbbbbbbbbbb bb bbbbb bbb bb
ccccc c cc ccc

dddd  dddd 

XXXX XX 
zzzzzz zzz

或者:

aaaaaaa aa aa
bbbbbbbbbbbbbbb bb bbbbb bbb bb
ccccc c cc ccc

dddddddd


eeeee

XXXX XX 
zzzzzz zzz

我想将XXXX XX替换为YYYY。我想我需要检测字符串中的最后Enter并执行操作。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

我做这样的事情。如果有问题的字符串总是在倒数第二行,我将字符串拆分为一个字符串数组,每行一个字符串。然后找出有多少行(数组中的字符串)。感兴趣的对象是这个数字-2。然后用YYYY替换此字符串。

修改

var result = Regex.Split(input, "\r\n|\r|\n");
int len = result.Length;
result[len - 2] = "YYYY";
var output = string.Join(Environment.NewLine, result);

答案 1 :(得分:0)

如果它只是模式,这里是Regex的一个例子:

\b\S{4}\s\S{2}\b

您可以像这样使用此正则表达式:

var regex = new Regex(@"\b\S{4}\s\S{2}\b");
var result = regex.Replace(inputString, "YYYY");

它查找单词边界(例如返回),然后是四个非空白字符,然后是一个空白字符,两个非空白字符和一个单词边界。它应该做你想要的。

但是,根据您的输入,使用此正则表达式可能更好:

\b\S{4} \S{2}\b

所以我用实际的空格字符替换了空白字符。当然,你的一个角色可能会被计为一个单词边界,然后我又要看一个你输入的例子。

以下是其工作原理的示例:

example

它位于C#interactive中,与普通的C#非常相似。

修改

当我意识到您的模式相关行以空格结尾时,您也可以使用此模式:

\b\S{4} \S{2}\b\n

哪个可能会更好。但是,您必须将其替换为"YYYY\n"