Javascript для подстроки и удаления всего после нее - PullRequest
5 голосов
/ 14 января 2011

Мне нужно сопоставить подстроку X в строке Y и нужно сопоставить X, а затем удалить все после нее в Y.

Ответы [ 5 ]

11 голосов
/ 14 января 2011

Код

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)

Возвращает позицию символа первого экземпляра text2 в тексте 1.

text2.length

Возвращает длину текста 2, поэтому, если мы хотим включить это в возвращаемое значение, мы добавляем это к длине возвращаемого индекса, давая нам возвращаемый результат!

4 голосов
/ 14 мая 2013

Если вы хотите сопоставить только X в Y и вернуть только 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"]
4 голосов
/ 14 января 2011

Вы можете использовать substring и indexOf:

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

DEMO

Конечно, вы должны заранее проверить, находится ли X в Y.

0 голосов
/ 14 января 2011
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);
0 голосов
/ 14 января 2011
var index = y.indexOf(x);
y = index >= 0 ? y.substring(0, y.indexOf(x) + x.length) : y;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...