Как получить текст между двумя символами? - PullRequest
19 голосов
/ 09 сентября 2011

|text to get| Other text.... migh have "|"'s ...

Как я могу получить text to get материал из строки (и удалить его)?

Это должно быть только первое совпадение

Ответы [ 6 ]

47 голосов
/ 09 сентября 2011
var test_str = "|text to get| Other text.... migh have \"|\"'s ...";
var start_pos = test_str.indexOf('|') + 1;
var end_pos = test_str.indexOf('|',start_pos);
var text_to_get = test_str.substring(start_pos,end_pos)
alert(text_to_get);
9 голосов
/ 09 сентября 2011

Вам не нужно регулярное выражение для этого; запускать систему регулярных выражений для такой простой задачи совершенно излишне.

Просто используйте базовые манипуляции со строками:

function getSubStr(str, delim) {
    var a = str.indexOf(delim);

    if (a == -1)
       return '';

    var b = str.indexOf(delim, a+1);

    if (b == -1)
       return '';

    return str.substr(a+1, b-a-1);
    //                 ^    ^- length = gap between delimiters
    //                 |- start = just after the first delimiter
}

print(getSubStr('|text to get| Other text.... migh have "|"s ...', '|'));

// Output: text to get

Живая демоверсия.

5 голосов
/ 09 сентября 2011

Чтобы получить:

"|text to get| Other text.... migh have \"|\"'s ...".match(/\|(.*?)\|/)

Чтобы удалить его:

"|text to get| Other text.... migh have \"|\"'s ...".replace(/\|(.*?)\|/, "")

Я не эксперт по Regex, поэтому, если у кого-то есть улучшения, отредактируйте.

0 голосов
/ 09 сентября 2011

Вам нужно получить нужный текст, используя match, а затем запустить replace с ним:

var text = "|text to get| Other text.... migh have \"|\"'s ...";
text.replace(text.match(/\|([^|]*)\|/)[1], "");
0 голосов
/ 09 сентября 2011

Вы должны искать следующие функции:

split()
substr()

В зависимости от того, как вы хотите решить свою задачу, можно использовать любой из них.

0 голосов
/ 09 сентября 2011
string = '|text to get| Other text.... migh have "|"\'s ...';
string = string.replace(/^\|[^|]*\|/, '');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...