“文本处理”模块,去除前后空白字符失效

BUG反馈 · 972 次浏览
墨尹琳 创建于 1天12小时前

怎么有两个\r\n就去除不掉了


回复内容
巴贝奇 1天0小时前
#1

问题说明

直接在文本里输入\r\n,其实是这些字符\、r、\、n的组合,和普通的字符串abc没有区别,没有特殊的含义,并不表示真正的换行符,在代码层面其实是 “abc\\r\\ndef”,\都被转义了。



从上面的例子可以看出来:文本 "abc\r\ndef" 在代码层面其实是 "abc\\r\\ndef"。


在文本里按下Enter键,才是真正的换行符,代码层面是 “abc\r\ndef”,\ 没有被转义,和后面的字母r或n,组合在一起,表示特殊的含义。

从上面的例子可以看出来:文本 "abc{Enter}def" 才是真正的换行 "abc\r\ndef"


解决方法

从你的描述中可以看出,你要做的是去除普通的字符\r\n,并不是去除换行符,所以用【去除前后空白字符】没有效果,应该用文本正则替换来实现。


$=//去除前后字符\r\n
string textTmp = {text};

textTmp = Regex.Replace(textTmp, @"^(\\r\\n)+", "");
textTmp = Regex.Replace(textTmp, @"(\\r\\n)+$", "");

return textTmp;


巴贝奇 最后更新于 1天0小时前
墨尹琳 回复 巴贝奇 23小时53分钟前 :

是我没有描述清楚,在本次中,\r\n指的是实际上的换行符,而不是字符。
实际情况如截图所示,使用”文本处理“模块对列表每个进行去除空白字符,调试运行的记录里,第一个项末尾有一个换行符,去除成功,最后一个项,末尾有两个换行符,却没有去除掉


巴贝奇 回复 墨尹琳 23小时37分钟前 :

我猜测应该是这样的:北京后面的确实是换行符,但是深圳后面的是普通字符。

你加上面那段代码处理逻辑呗,多一道保险,这样无论首尾的是换行符,还是普通字符\r\n,就都能处理了。

巴贝奇 回复 墨尹琳 23小时28分钟前 :

你可以在【深圳\r\n】后面拼接些内容,放到【提示信息】里显示出来,看看有没有换行,这样就能验证后面的到底是什么。

CL 23小时6分钟前
#2

这里测试正常,可能你的内容里还有别都不太正常的字符。 可以用Length看一下长度是不是不太对。


墨尹琳 回复 CL 22小时29分钟前 :

找到了,是零宽字符😂  这玩意不能在调试里显示出来吗,没有经验都找不到原因

CL 回复 墨尹琳 21小时43分钟前 :

等试试看看。

回复主贴