繁体   English   中英

Javascript匹配子字符串并删除它之后的所有内容

[英]Javascript to match substring and strip everything after it

我需要匹配字符串Y中的子字符串X,并且需要匹配X然后在Y之后删除它之后的所有内容。

var text1 = "abcdefgh";
var text2 = "cde";

alert(text1.substring(0, text1.indexOf(text2)));
alert(text1.substring(0, text1.indexOf(text2) + text2.length));

第一个警报不包括搜索文本,第二个警报不包括。

说明

我将解释代码的第二行。

text1.substring(0, text1.indexOf(text2) + text2.length))

text1.substring(startIndex, endIndex)

这段代码从startIndex到endIndex获取每个字符,0是第一个字符。 所以在我们的代码中,我们从0(开始)搜索并结束:

text1.indexOf(text2)

这将返回文本1中text2的第一个实例的字符位置。

text2.length

这将返回文本2的长度,因此如果我们想在返回的值中包含它,我们将它添加到返回索引的长度,给我们返回的结果!

如果你想在Y中只匹配X并且只返回X,我建议使用match

var x = "treasure";
var y = "There's treasure somewhere in here.";
var results = y.match(new RegExp(x)); // -> ["treasure"]

results将是一个空数组或包含第一次出现的x

如果你想要y所有内容,包括第一次出现的x ,只需稍微修改正则表达式即可。

var results2 = y.match(new RegExp(".*" + x)); // -> ["There's treasure"]

您可以使用substringindexOf

Y.substring(0, Y.indexOf(X) + X.length))

DEMO

当然你应该事先测试X是否在Y.

var index = y.indexOf(x);
y = index >= 0 ? y.substring(0, y.indexOf(x) + x.length) : y;
var X = 'S';
var Y = 'TEST';
if(Y.indexOf(X) != -1){
 var pos = parseInt(Y.indexOf(X)) + parseInt(X.length);
 var str = Y.substring(0, pos);
 Y = str;
}
document.write(Y);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM