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

时间:2011-01-14 11:35:15

标签: javascript string

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

5 个答案:

答案 0 :(得分:11)

<强>代码

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的长度,所以如果我们想在返回的值中包含它,我们将它添加到返回索引的长度,给我们返回的结果!

答案 1 :(得分:4)

您可以使用substringindexOf

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

DEMO

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

答案 2 :(得分:4)

如果你想在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"]

答案 3 :(得分:0)

var index = y.indexOf(x);
y = index >= 0 ? y.substring(0, y.indexOf(x) + x.length) : y;

答案 4 :(得分:0)

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);