我需要匹配字符串Y中的子字符串X,并且需要匹配X,然后在Y之后删除它之后的所有内容。
答案 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)
答案 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);