开发者

Simple Javascript string manipulation

I have a string that will look something like this:

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

I need to get the value inside the quotes inside the string. So esse开发者_开发技巧ntially I need to get the codehere and store it in a variable.

After some researching it looks like I could loop through the string and use .charAt(i) to find the quotes and then pull the string out one character at a time in between the quotes.

However I feel there has to be a simpler solution for this out there. Any input would be appreciated. Thanks!


You could use indexOf and lastIndexOf to get the position of the quotes:

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

Then you can validate they are not the same position, and use substring to retrieve the code:

var code = myString.substring(openQuote, closeQuote + 1);


Regex:

var a = "I'm sorry the code \"codehere\" is not valid";
var m = a.match(/"[^"]*"/ig);
alert(m[0]);


Try this:

var str = "I'm sorry the code \"cod\"eh\"ere\" is not valid";
alert(str.replace(/^[^"]*"(.*)".*$/g, "$1"));


You could use Javascript's match function. It takes as parameter, a regular expression. Eg:

/\".*\"/


Use regular expressions! You can find a match using a simple regular expressions like /"(.+)"/ with the Javascript RegExp() object. Fore more info see w3schools.com.


Try this:

var msg = "I'm sorry the code \"codehere\" is not valid";
var matchedContent = msg.match(/\".*\"/ig);
//matchedContent is an array
alert(matchedContent[0]);


You should use a Regular Expression. This is a text pattern matcher that is built into the javascript language. Regular expressions look like this: /thing to match/flags* for example, /"(.*)"/, which matches everything between a set of quotes.

Beware, regular expressions are limited -- they can't match nested things, so if the value inside quotes contains quotes itself, you'll end up with a big ugly mess.

*: or new RegExp(...), but use the literal syntax; it's better.


You could always use the .split() string function:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜