2011-12-17 2 views
1

У меня есть переменная в JavaScript:JavaScript: получение части строки с помощью подстроку

var text = "i HATE you[i LOVE you]" 

ниже код возник из VB. Я проверил его против W3Schools, но я не понимаю, почему это не сработает.

var test = text.Substring(text.IndexOf("[") + 1, text.IndexOf("]") - text.IndexOf("[") - 1); 
document.write(test); 
+0

Что вы пытаетесь получить? '" i HATE you "или' "[i LOVE you]" '? – Will

+0

Какова ваша цель? Что вы ожидаете увидеть в результате? –

ответ

1

Второй параметр - это «конечный индекс», а не «длина». Или вы можете использовать регулярное выражение.

0

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

text.substring(text.indexOf("[") + 1, text.indexOf("]") - text.indexOf("[") - 1); 
3

Javascript является случай чувствительными, поэтому он не имеет каких-либо Substring или IndexOf методы, он имеет substring и indexOf методы. Однако метод .NET SubString соответствует методу Javascript substr:

var test = text.substr(text.indexOf("[") + 1, text.indexOf("]") - text.indexOf("[") - 1); 
+0

Спасибо, что сообщили, что substr является эквивалентом .NET. –

1

Причины, по которым в настоящее время разрешение терпит неудачу:

  • Javascript чувствителен к регистру вы пытаетесь вызвать String.IndexOf не будет работа, вместо этого вы должны напишите как indexOf.

  • того же причина, как запись предыдущего списка, SubString должен быть записана в виде substring, в методе вы используете это кажется, что вы ищете substr (из-за ваши аргументы).

Альтернативные решения

Там несколько способов упростить ваш метод получения текста между [ и ], я написал три примера ниже.

text.substring (text.indexOf ('[')+1, text.lastIndexOf (']')); 

text.substr (n=text.indexOf('[')+1, text.indexOf (']')-n); 

text.split (/\[|\]/)[1]; 

text.match (/\[(.*?)\]/)[1]; 
Смежные вопросы