2012-02-23 5 views
1

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

EducationLink 
BioLink 
InterestsLink 

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

Education 
Bio 
Interests 

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

/^ (^Link) $/ 

Использование строковых функций, таких как срез() и подстрока(), Я получил значения только справа от выбранного текста, а не слева.

Благодарим за помощь.

ответ

2

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

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

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

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

+0

Потому что, если есть более чем одна строка для работы. Потому что там где-то может быть 'Link' в середине строки. Потому что есть так много, что может пойти не так с простой заменой строки. Кроме того, нет причин. –

+0

Ни один из этих сценариев не верен, так что это кажется лучшим ответом. – LonelyWebCrawler

+0

@ Kolink не нужно, чтобы ваши трусики закручивались. Заявитель прямо заявляет, что у него есть несколько строк * и продолжает перечислять их. –

2
text = input.replace(/Link(\n|$)/g,"\n"); 
+0

Если предположить, что каждая строка представляет собой отдельную строку, тогда она должна выглядеть следующим образом: 'text = input.replace (/ Link $ /, '');' .Я не уверен, что означает OP, однако. – benekastah

+0

Отредактировано, чтобы разрешить либо случай –

+0

Каждая строка представляет собой отдельную строку, извините за это. – LonelyWebCrawler

1

Вы должны были бы поставить Link в конце вашего RegEx, такие как:

^([A-Z]+)Link$ 

Совпадение:

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

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

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

var x = myStr.replace('Link', ''); 
+0

О, это было довольно очевидно. Однако почему мой RegEx не работал? – LonelyWebCrawler

+0

Ваш RegEx не имеет большого смысла. Символ '^' используется для соответствия началу строки или для сбрасывания символов в группе скобок. Например, '[^ Link]' будет означать любой символ, который не является ни L, ни 'i', ни' n', ни 'k'. –

+0

Хорошо, но я использовал обычные круглые скобки(), а не квадратные скобки []. – LonelyWebCrawler

0

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

var txt = 'EducationLink'.split('Link')[0]; // txt == 'Education' 
0

Попробуйте следующее:

<script> 

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

</script> 
0

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

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 

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

Смежные вопросы