2012-11-15 128 views
2

我正在尋找一個JavaScript函數,它需要一個字符串參數並檢查低於32的ascii字符,用空字符串替換它們 - >「」。我是JavaScript新手,所以我想知道是否有人可以指引我走向正確的方向?簡單的ascii替換 - Javascript

提前感謝您的時間。

+0

另外,爲什麼?可能是更好的方法。 –

+0

http://stackoverflow.com/questions/94037/convert-character-to-ascii-code-in-javascript 這可能有助於 – Ferhat

+0

我的意思是,我想找到和字符串中刪除任何字符它的ASCII值低於32 – Pumpkin

回答

6

試試這個:

var replaced = string.replaceAll("[^ -~]", ""); 

使用^否定字符類,由於空間字符32在ASCII表中,〜是最後一個可打印字符,你基本上是在說「所有不是可打印字符的東西」。

要簡單地從0-31使用刪除所有字符:

var replace = string.replaceAll("\x00-\x1F", ""); 
+1

請參閱我的編輯,其中包括如何匹配特定字符代碼,1F爲31. – Sean

+0

編輯中的示例非常簡單且有幫助。 – Pumpkin

+0

這將刪除法文字母「à」。 –

1

如果我正確理解你的問題,你正在尋找一個正則表達式與.replace使用...

對於更換任何可打印的ASCII字符,你可以使用這個表達式:

/[ -~]/ 

,你可能會必須調整範圍。我建議更改tilder,因爲它是最後一個可打印字符。

對不起,我明白你的意思了!我認爲,除非使用使用自己的特殊符號,你無法比擬的非打印字符:即\ b \ S \ n等

1
function keepCharsAbove(inStr, charCode) { 
    var goodChars = []; 
    for(var x = 0; x < inStr.length; x++) { 
     if(inStr.charCodeAt(x) > charCode) { 
      goodChars.push(inStr.charAt(x)); 
     } 
    } 

    return goodChars.join(""); 
} 

用法:

keepCharsAbove("foo \t bar",32); // returns 'foobar' 
+0

將輸入轉換爲單個字符串的數組可能會更好,過濾數組(Array.filter),然後再回到一個字符串中。 (更實用的方法。) – Richard