2016-02-01 38 views
0

我有這個輸入:如何將字符串轉換爲0,如果它不包含任何數字?

var str1 = "21"; 
var str2 = "1."; 
var str3 = "5. test" 
var str4 = "- something"; 

我想這個輸出:

// 21 
// 1 
// 5 
// 0 

  • 首先情況下並不需要轉換。
  • 情況下需要使用Number();
  • 情況下使用.replace(/(\d)/g, "$1");
  • 可是我該怎麼辦第四情況?其實我想用0代替一個字符串,如果它不包含數字。

我的問題似乎很容易,但是這30分鐘,我正想着它,我還是沒能解決它。

+0

檢查,如果第一個元素是數字......如果不是比0賦給它 –

+0

@YoYo它返回'NaN' – stack

+0

檢查爲STR4第一要素,只是因爲1也將返回NaN的,,,權 –

回答

2

isNaN()parseInt()

var str1 = "21"; 
 
var str2 = "1."; 
 
var str3 = "5. test" 
 
var str4 = "- something"; 
 

 
console.log(isNaN(parseInt(str1)) ? 0 : parseInt(str1)); 
 
console.log(isNaN(parseInt(str2)) ? 0 : parseInt(str2)); 
 
console.log(isNaN(parseInt(str3)) ? 0 : parseInt(str3)); 
 
console.log(isNaN(parseInt(str4)) ? 0 : parseInt(str4));

+0

他怎麼能使用這個...因爲'1.'也會導致NaN ,,,所以他應該給它分配0? –

+0

它返回正確的值,檢查我的代碼段 –

2

如果數量(yourString)= NaN的,你可以說再打印0

+0

'Number(「5. test」)'也會導致NaN。 – krisk

+0

在這種情況下,我建議使用charAt(0)來檢查它是否在開始處有一個整數。如果是這樣,你可以檢查下一個字符(charAt(1)),直到它返回一些東西而不是數字或結束。你可以檢查返回字符是數字或不通過檢查它的aasci代碼 –

1
var patt = /([0-9]+)/, 
     match = patt.exec(str); 
    if (!match) 
     str = 0; 
    else 
     str = match[1]; 

這將從您的字符串匹配的第一個數字。

+0

我想如果條件是'真',然後返回這樣一個數...! – stack

+0

如果字符串中沒有編號,此代碼將打印0。如果我得到你的問題。 – krisk

+1

好的,我明白了。你想測試所有的條件。我正在添加一個編輯。 – krisk

1
var str4 = "- something"; 
str4 = (str4.match(/\d+/g)) ? str4 : 0; 
相關問題