2014-08-29 89 views
0

我想提取這個字符串的數字:「ax(341); ay(20); az(3131);」解析字符串查找字符

我認爲我可以做到這一點如何:

var ax = data.split('('); 
var ax2 = ax[1].split(')'); 

AX2 [0]有「341」

現在,如果我可以重複這一點,但在接下來的indexOf開始服用第二個數字。

我認爲這是一個不好的做法,所以我問你如果你有一個更好的主意。

在此先感謝

+0

使用正則表達式在這裏看到http://stackoverflow.com/questions/13807207/regex-find-a-number-between-parentheses – Mritunjay 2014-08-29 10:23:49

回答

4

使用正則表達式:

var str = "ax(-341);ay(20);az(3131);" 
var regex = /(-?\d+)/g 
var match = str.match(regex); 
console.log(match); // ["-341", "20", "3131"] 

現在,你可以訪問陣列作爲正常的數字。

DEMO

+0

數字可以是負數,這種模式如何? – oscarvady 2014-08-29 10:38:04

+0

@oscarvady,看我的編輯。 – Andy 2014-08-29 10:40:27

1

您可以使用正則表達式從此提取所有數字。

var data = "ax(341);ay(20);az(3131);"; 
var ax = data.match(/\d+/g); 

這裏ax現在["341", "20", "3131"]

注意ax包含數字的字符串。將它們轉換爲數字,使用以下

ax2 = ax.map(function(x){ return parseInt(x); }) 

編輯:您也可以使用Number的功能在上面的行映射。它會看起來像,

ax2 = ax.map(Number) 

ax2後包含原始字符串的所有整數。

+1

你可以只說'AX2 = ax.map(parseInt函數)' – Mritunjay 2014-08-29 10:26:18

+0

不可以。它給出了一些奇怪的結果。試用。對我來說,它給了[341,NaN,NaN]。看到[這](http://stackoverflow.com/questions/262427/javascript-arraymap-and-parseint) – nisargjhaveri 2014-08-29 10:27:25

+0

這將給出一個錯誤,因爲'parseInt'使用第二個參數作爲基數。最好使用'Number':'ax2 = ax.map(Number)' – Andy 2014-08-29 10:27:26

0

你可以使用正則表達式,如:

var string = 'ax(341);ay(20);az(3131);'; 
var pattern = /([0-9]{1,})/g; 

var result = string.match(pattern); 
console.log(result); 
// ["341", "20", "3131"] 

http://regex101.com/r/zE9pS7/1