2012-02-16 74 views
3

之間串我有這樣檢索兩個字符

​​

字符串我怎樣才能找回之間#和元素_。截至目前,我正在用新線分割文本,但無法鍛鍊這一點。請幫助我。請使用這個小提琴http://jsfiddle.net/h728C/2/

+4

你到底想找回? – 2012-02-16 14:34:03

+0

請注意,您的字符串對象需要以分號結尾。 – 2012-02-16 14:44:56

回答

4

我已經在fidde上發佈了一些解決方案。它使用正則表達式

var str = $('#a').text(); 
var pattern = /#([\s\S]*?)(?=_)/g; 
var result = str.match(pattern); 
for (var i = 0; i < result.length; i++) { 
    if (result[i].length > 1) { 
     result[i] = result[i].substring(1, result[i].length); 
    } 
    alert(result[i]); 
} 

剝離結束和開始。

編輯

我已經updated the fiddle和代碼。現在它剝離開始#並結束_。 你也可以使用。無論哪個方便。

1

我真的不明白爲什麼,但這個工程:

var str = $('#a').text(); 
var results = []; 
$.each(str.split("_"), function(){ 
    var a = this.toString().split("#"); 
    if(a.length===2) results.push(a[1]); 
}); 

console.log(results);​ 
+0

謝謝,它的工作 – Exception 2012-02-16 14:53:16

5

如果您只是想你們之間的第一個字符串可以使用:

var mys= str.substring(str.indexOf('#')+1,str.indexOf("_")); 

這將返回:「這itA itB「

+0

但它並沒有返回我所有的模式.. :-( – Exception 2012-02-16 14:53:01

+0

@ Soi - 是的,沒有跡象表明在這個問題上這樣的問題應該明確說明這個願望 – 2012-02-16 15:16:26

+0

是的I同意你的意見。下次我會照顧:-) – Exception 2012-02-16 15:21:57

1

您可以使用這種正則表達式:

str.replace(/\s/g, "").match(/#(.*?)_/g, "$1"); 

看到這個fiddle

1

一個在線解決方案,以獲得陣列

var arrStr = str.split(/[#_]/); 
+0

我喜歡這個解決方案。 – Exception 2015-11-17 11:12:25