我有很多带有以下模式的字符串(格式):
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
并执行操作。我怎么能这样做?
答案 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
所以我用实际的空格字符替换了空白字符。当然,你的一个角色可能会被计为一个单词边界,然后我又要看一个你输入的例子。
以下是其工作原理的示例:
它位于C#interactive中,与普通的C#非常相似。
修改强>
当我意识到您的模式相关行以空格结尾时,您也可以使用此模式:
\b\S{4} \S{2}\b\n
哪个可能会更好。但是,您必须将其替换为"YYYY\n"
。