如何在不使用循环的情况下从java脚本中的文本块中删除最后一行。(仅使用正则表达式) 例如,
“互联网是一个互联计算机网络的全球系统,它使用标准互联网协议套件(TCP / IP)为全球数十亿用户提供服务。它是一个由数百万私人和公共,学术,商业和政府网络&&&“。
最后一行总是有“&&”。
答案 0 :(得分:4)
var str = "The ... and government networks&&";
str.replace(/\.[^.]+&&$/,'.');
如果是最后一行你的意思是最后一句话。最后一句不包含句号。
答案 1 :(得分:2)
你的文字中没有换行符,所以我猜你的意思是删除最后一句 -
string.replace(/\.[^\.]+\.?$/,'.');
If you want to be sure not to remove the only sentence, use
string.replace(/(\S+\.)[^\.]+\.?$/,'$1')
你需要做一些较重的提升,以避免切断有句号缩写的行,如琼斯先生,斯波克博士,琼斯夫人和圣安德鲁。就像在截肢前取下它们的时期并在之后更换它们一样。 (在这里分为可读性)
string= string.replace(/\b(Mr|Dr|Mrs|St)\. /g,'$1 ')
.replace(/(\S+\.)[^\.]+\.?$/,'$1').replace(/\b(Mr|Dr|Mrs|St) +/g,'$1. ')
答案 2 :(得分:1)
如果您需要新行有“计算机新行”
var str = "he ... and government networks&&";
str.replace(/\n[^\n]*&&$/,'');
答案 3 :(得分:1)
喜欢这个吗?
"First Line\n.sth.&&.\nAnother\nLast Line&&Last Word".replace(/\n.*&&.*$/,'');
结果
First Line
..sth.&&.
Another
根据你的问题,最后一行总是有“&&”。,这并不意味着必须以&&amp ;,结束?和其他线路可以有&&太
答案 4 :(得分:1)
如果您的文字没有换行符,则“最后一行”不存在。它仅在浏览器中显示时存在,但不作为文本的一部分存在。虽然你坚持“只使用正则表达式”,但正则表达式找不到它
如果您使用fixed width font
,则可以使用它,但这不太可能。您也可以循环直到达到目标高度,但这是不受欢迎的。
更好的方法是使用CSS。这是一个简化版本,显示前两行,隐藏其余行:
p.TwoLines {
overflow: hidden; /* no scroll bars */
font-size: 10pt; /* here I have a fixed size, for example */
line-height: 1.5;
height: 30pt /* 1.5*2lines *10sizeofline */;
width: 300px; /* not needed, just to see the effect */
}