2010-07-30 76 views
1

我嘗試從字符串中刪除一些不安全的字符,但我相信我的RegExp對象存在問題。從字符串中刪除一些字符

我在下面做的是如果有字符的編碼長度大於3個字符,他們應該被替換爲一個空格。

所以,如果編碼值是%3D這是=符號,在我的字符串中可以。但如果它是一個撇號%E2%80%99它應該被替換爲一個空格。

val = "Angelina’s"; 
valEnc = encodeURIComponent(val); 

for(var i = 0; i < val.length; i++){ 
    var a = val.substr(i,1); 
    if(encodeURIComponent(a).length > 3){ 
     console.log(a, encodeURIComponent(a)); 
     var re = new RegExp(encodeURIComponent(a),"ig"); 
     valEnc.replace(re," "); 
    }; 
}; 

console.log(decodeURIComponent(valEnc)); 

此代碼工作並記錄我不需要的字符,但它不能用空格替換它們,我做錯了什麼?謝謝。

+0

「所以,如果encryted價值......」這是「編碼」 – NullUserException 2010-07-30 22:35:22

+0

@NullUserException午夜失誤,幸虧固定... – Sinan 2010-07-30 22:39:21

回答

2

您似乎在這裏不必要地使用正則表達式。要做到這一點的方法之一是在一個時間來建立結果字符串中的一個字符:

val = "Angelina’s"; 
valEnc = ""; 

for(var i = 0; i < val.length; i++){ 
    var a = val.substr(i,1); 
    var e = encodeURIComponent(a); 
    if(e.length <= 3){ 
     valEnc += e; 
    } 
} 

console.log(decodeURIComponent(valEnc)); 
+0

絕對對,我應該好好睡一會兒,繼續用新鮮的大腦。多謝,夥計... – Sinan 2010-07-30 22:45:26