Простое манипулирование строкой JavaScript - PullRequest
1 голос
/ 08 августа 2011

У меня есть строка, которая будет выглядеть примерно так:

I'm sorry the code "codehere" is not valid

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

После некоторого исследования похоже, что я мог бы перебрать строку и использовать .charAt (i), чтобы найти кавычки, а затем вытянуть строку по одному символу за раз между кавычками.

Однако я чувствую, что для этого должно быть более простое решение. Любой вклад будет оценен. Спасибо!

Ответы [ 8 ]

3 голосов
/ 08 августа 2011

Вы можете использовать indexOf и lastIndexOf, чтобы получить позицию кавычек:

var openQuote  = myString.indexOf('"'),
    closeQuote = myString.lastIndexOf('"');

Тогда вы можете подтвердить, что они не являютсяв той же позиции и используйте substring, чтобы получить код:

var code = myString.substring(openQuote, closeQuote + 1);
2 голосов
/ 08 августа 2011

Regex:

var a = "I'm sorry the code \"codehere\" is not valid";
var m = a.match(/"[^"]*"/ig);
alert(m[0]);
1 голос
/ 08 августа 2011

Вы можете использовать функцию Javascript match . Он принимает в качестве параметра регулярное выражение. Например:

/\".*\"/

1 голос
/ 08 августа 2011

Попробуйте это:

var str = "I'm sorry the code \"cod\"eh\"ere\" is not valid";
alert(str.replace(/^[^"]*"(.*)".*$/g, "$1"));
0 голосов
/ 08 августа 2011

Вы всегда можете использовать строковую функцию .split():

var mystring = 'I\'m sorry the code "codehere" is not valid' ;
var tokens = [] ;
var strsplit = mystring.split('\"') ;
for(var i=0;i<strsplit.length;i++) {
    if((i % 2)==0) continue;    // Ignore strings outside the quotes
    tokens.push(strsplit[i]) ;  // Store strings inside quotes.
}

// Output:
// tokens[0] = 'codehere' ;
0 голосов
/ 08 августа 2011

Вы должны использовать Регулярное выражение .Это сопоставитель текстового шаблона, который встроен в язык JavaScript.Регулярные выражения выглядят так: /thing to match/flags*, например, /"(.*)"/, который соответствует всему, что находится между набором кавычек.

Осторожно, регулярные выражения ограничены - они не могут соответствовать вложенным вещам, поэтому еслизначение внутри кавычек содержит сами кавычки, в результате вы получите большой ужасный беспорядок.

*: или new RegExp(...), но используйте буквальный синтаксис;это лучше.

0 голосов
/ 08 августа 2011

Попробуйте это:

var msg = "I'm sorry the code \"codehere\" is not valid";
var matchedContent = msg.match(/\".*\"/ig);
//matchedContent is an array
alert(matchedContent[0]);
0 голосов
/ 08 августа 2011

Используйте регулярные выражения!Вы можете найти соответствие, используя простые регулярные выражения, такие как /"(.+)"/, с объектом Javascript RegExp().Подробнее см. w3schools.com .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...