Извлечение части простой строки с использованием Javascript - PullRequest
1 голос
/ 24 февраля 2012

Допустим, у меня есть эти строки (каждая новая строка является отдельной строкой):

EducationLink
BioLink
InterestsLink

И я хотел извлечь часть, которая не является "Link", используя Javascript. Как бы я это сделал? Ожидаемые результаты

Education
Bio
Interests

Я попробовал Regex, но я не очень опытен с ними, и он потерпел неудачу:

/^ (^Link) $/

Используя строковые функции, такие как slice () и substr (), я получил значения только справа от выделенного текста, а не слева, как нужно.

Спасибо за вашу помощь.

Ответы [ 6 ]

2 голосов
/ 24 февраля 2012

вы можете использовать .replace()

'EducationLink'.replace('Link', ''); //returns Education

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace

Дело в том, что вы МОЖЕТЕ использовать регулярные выражения для этой замены, но, будучи таким простым сценарием (если в нем нет ничего другого), зачем вам слишком усложнять вещи?

2 голосов
/ 24 февраля 2012
text = input.replace(/Link(\n|$)/g,"\n");
1 голос
/ 24 февраля 2012

Вам необходимо поместить Link в конец вашего RegEx, например:

^([A-Z]+)Link$

Это соответствует:

  • Один или несколько символов между A иZ
  • Тогда слово Link
  • Тогда конец строки

Часть в скобках будет возвращена как группа.

Кроме того, если вам нужно только удалить суффикс Link, вы можете использовать метод replace() в Javascript:

var x = myStr.replace('Link', '');
0 голосов
/ 24 февраля 2012

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

var i = 0;
var strings = [
    'EducationLink',
    'BioLink',
    'InterestsLink'
];
var s = '';
var r = /^(.+)Link$/
for (i = 0; i < strings.length; i += 1) {
    s = strings[i];
    //s = s.substring(0, s.indexOf('Link')); //Uncomment for substring
    //s = s.match(r)[1]; //Uncomment for regex
    s = s.replace('Link', '');
    strings[i] = s;
}
console.log(strings);

Скопируйте и вставьте в окно консоли браузера для запуска.

Чтобы ответить на ваш вопрос («Однако почему мой RegEx не работает? ") в комментарии к другому ответу ваш RegEx делает следующее:

/^ (^Link) $/
//Each regex term on own line, commented below
^   //start of string
    //Literal space
(^Link) //Capturing group, string starting with 'Link'.
    //Literal space
$   //end of string

Хотя вы можете иметь два идентификатора" начала строки "в регулярном выражении, всегда будет только один" начало строки "».Символ ^ является только отрицанием в классе символов, который заключен в квадратные скобки, а не изогнут.Если вы хотите захватить буквальную карету (^), поставьте перед ней обратную косую черту (\^).

0 голосов
/ 24 февраля 2012

Попробуйте:

<script>

var str = "EducationLink";
index = str.search(/link/i);
str = str.substr(0,index);

</script> 
0 голосов
/ 24 февраля 2012

Одним из способов является использование String.split () MDN

var txt = 'EducationLink'.split('Link')[0]; // txt == 'Education'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...