2012-11-08 72 views
3

我正在嘗試製作一個程序,它可以從字符串中刪除多餘的空格。我試圖做出我期望需要的前兩個功能。在做了一些測試和諮詢同學後,我無法弄清楚第二個功能有什麼問題(我相當確信這是第二個功能)?使用替換/正則表達式在JavaScript中留下修剪

var isWhiteSpace = function(char) { 
    var out = false; 
    if (char === ' ' || char === '\f' || char === '\n' || char === '\r' || char === '\t') { 
     out = true; 
    } 
    return out; 
}; 

var removeLeadingSpaces = function(s) { 
    var i; 
    for (i = 0; i < s.length; i++) { 
     if (isWhiteSpace(s.charAt(i))) { 
      s.replace(s.charAt(i), ''); 
     } 
    } 
    return s; 
}; 
+0

取決於需要如何支持,較新的瀏覽器支持內置['trim()'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/Trim)功能。 – Marty

+0

[String未定義錯誤。 JS。它是空的空間相關?](http://stackoverflow.com/questions/13281492/string-is-not-defined-error-js-is-it-empty-space-related) –

回答

1

使用s=s.replace(s.charAt(i), '');

的替代方法不會修改原始字符串 - 它返回一個值。

+0

這是不正確的。檢查https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace。替換方法不會修改原始字符串。 – Osiris

+0

那麼,顯然寫s = s.replace(...)會更新s!問題中的代碼是's.replace(...)',它不會修改s。 – Osiris

3

s = s.replace(/^\s+/,"");會比運行循環更簡單。

這是因爲JavaScript的正則表達式已經知道什麼是空白符(\s),並知道如何從一個字符串(^)的開始拉,可以在自己的(+)遞歸。

+0

他們是否會推薦用於查找這些術語的定義和用法的參考? –

+1

@ alex23 - 在這種情況下IE做什麼不同? – nnnnnn

+0

@SashaModestyMorrison我用http://www.javascriptkit.com/javatutors/redev2.shtml來仔細檢查我寫的內容,這是一個很好的單頁參考。 – Plynx