2016-02-01 60 views
0

我想寫一個函數,可以換出unicode字符的Unicode字符爲unicode ASCII字符,問題是unicode連字符和上傳包含它們的字符串時不被讀取。交換Unicode字符

我希望這個函數有一個帶有鍵值對的對象(這樣它可以用更多的unicode引號或連字符來更新,這可能會導致將來出現問題),該對象的關鍵是ASCII報價"和該值是一個unicode引號的集合,用於交換字符串。

function replaceUnicode(string) { 

     var dictionary = { 
     '"': '"」"」', 
     '-': '-﹣' 
     } 

    } 

我知道你可以使用正則表達式來換出的Unicode字符串中的字符,但我想使用這個對象的選擇Unicode字符的字典來代替。我問的是,如果你傳入的字符串中包含與字典值相匹配的unicode引號,那麼如何交換字典對象鍵值的引號?

+2

您可以從字典的鍵動態創建正則表達式。 – Bergi

回答

1

你可以使用字典,但你仍然需要用正則表達式來替換來找到匹配。

像這樣的東西應該工作:

function replaceUnicode(s) { 

    var dictionary = { 
     '"': '"」"」', 
    '-': '-﹣' 
    } 

    for(var key in dictionary) { 

    var re = new RegExp(key,"g"); 
    s = s.replace(re,dictionary[key]) 

    } 

    return s 

} 


var str = 'hello "world" - how are - you'; 
console.log(replaceUnicode(str)) 

你可以看到它在這裏工作:https://jsfiddle.net/krpxu0gL/

希望幫助!