我有一個字符串,這將是這個樣子:簡單的JavaScript字符串操作
I'm sorry the code "codehere" is not valid
我需要得到字符串中的引號內的值。所以基本上我需要獲取代碼並將其存儲在一個變量中。
經過一番研究,它看起來像我可以遍歷字符串並使用.charAt(i)查找引號,然後在引號之間一次拉出一個字符。
但是我覺得必須有一個更簡單的解決方案。任何輸入將不勝感激。謝謝!
我有一個字符串,這將是這個樣子:簡單的JavaScript字符串操作
I'm sorry the code "codehere" is not valid
我需要得到字符串中的引號內的值。所以基本上我需要獲取代碼並將其存儲在一個變量中。
經過一番研究,它看起來像我可以遍歷字符串並使用.charAt(i)查找引號,然後在引號之間一次拉出一個字符。
但是我覺得必須有一個更簡單的解決方案。任何輸入將不勝感激。謝謝!
你可以使用indexOf
和lastIndexOf
得到引號的位置:您可以驗證他們是不一樣的位置
var openQuote = myString.indexOf('"'),
closeQuote = myString.lastIndexOf('"');
然後,用substring
檢索代碼:
var code = myString.substring(openQuote, closeQuote + 1);
只是在一個側面說明 - 'substring'(而不是'substr')接受開始和結束,所以它可能更直接一點:'myString.substring(openQuote, closeQuote + 1)'。 (在'substr'中+1實際上也是強制性的 - 現在它不包含最後一個''') – pimvdb
完美!我不知道我是否足夠清楚我所要求的用其他答案來判斷,但這是我正在尋找的。謝謝! –
如果字符串是這樣的'我很抱歉代碼「codehere」無效,「codethere」是有效的' – ShankarSangoli
試試這個:
var str = "I'm sorry the code \"cod\"eh\"ere\" is not valid";
alert(str.replace(/^[^"]*"(.*)".*$/g, "$1"));
你的正則表達式包含一個錯誤。 – Tomalak
如果沒有符合該模式的內容,該怎麼辦?那麼整個字符串將被返回? –
正則表達式:
var a = "I'm sorry the code \"codehere\" is not valid";
var m = a.match(/"[^"]*"/ig);
alert(m[0]);
使用正則表達式!您可以使用簡單的正則表達式,例如/"(.+)"/
與Javascript RegExp()
對象找到匹配項。詳情請參閱w3schools.com。
w3schools包含很多錯誤,我不會建議使用它。 – pimvdb
你可能不應該推薦w3schools。他們的很多材料都是誤導性的,有時甚至是不正確的。見.. http://w3fools.com/ –
您可以使用Javascript的match函數。它需要一個正則表達式作爲參數。例如:
/\".*\"/
試試這個:
var msg = "I'm sorry the code \"codehere\" is not valid";
var matchedContent = msg.match(/\".*\"/ig);
//matchedContent is an array
alert(matchedContent[0]);
您應該使用Regular Expression。這是一種內置於JavaScript語言中的文本模式匹配器。正則表達式如下所示:/thing to match/flags
*例如/"(.*)"/
,它匹配一組引號之間的所有內容。
請注意,正則表達式是有限的 - 它們不能匹配嵌套的東西,所以如果引號內的值本身包含引號,那麼最終會產生一個很大的醜陋混亂。
*:或new RegExp(...)
,但使用字面語法;它更好。
你總是可以使用.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' ;
這個問題可能會有一些使用 http://stackoverflow.com/questions/413071/regex-to-get-string-之間的花括號,我想要什麼之間的花括號 – Trevor