來自PHP背景,我有點溺愛str_replace
函數,您可以通過一堆乾草堆&針。替換javascript中的某些字符
我還沒有沒見過的Javascript這樣的功能,但我已成功地完成任務,altough難看,用如下代碼:
return myString.replace(" ", "-").replace("&", ",");
然而,正如我需要更換某些人物與其他角色的成長,我相信有很多更好的方法來實現這一目標 - 無論是在性能方面還是在漂亮方面。
那我能做些什麼呢?
來自PHP背景,我有點溺愛str_replace
函數,您可以通過一堆乾草堆&針。替換javascript中的某些字符
我還沒有沒見過的Javascript這樣的功能,但我已成功地完成任務,altough難看,用如下代碼:
return myString.replace(" ", "-").replace("&", ",");
然而,正如我需要更換某些人物與其他角色的成長,我相信有很多更好的方法來實現這一目標 - 無論是在性能方面還是在漂亮方面。
那我能做些什麼呢?
您可以使用此:
var str = "How are you doing?";
var replace = new Array(" ", "[\?]", "\!", "\%", "\&");
var by = new Array("-", "", "", "", "and");
for (var i=0; i<replace.length; i++) {
str = str.replace(new RegExp(replace[i], "g"), by[i]);
}
把那成一個函數:
function str_replace(replace, by, str) {
for (var i=0; i<replace.length; i++) {
str = str.replace(new RegExp(replace[i], "g"), by[i]);
}
return str;
}
用法示例小提琴: http://jsfiddle.net/rtLKr/
用'\ ['&']'包裹每一個字符 - 對吧? – Industrial
這是基於正則表達式,所以是的,他們大多數確實需要包裝和逃避。我通常懶得真的考慮它,只是把它扔進jsFiddle.net或其他東西的試驗和錯誤。 –
PHP.js有可能解決您的問題的函數:http://phpjs.org/functions/str_replace:527
如果對你更容易,你會不喜歡這樣的東西;
str.replace(/[ab]/g, function (match, i) {
switch (match) {
case "a":
return "A";
case "b":
return "B";
}
}));
即使參數1,它接受所有你正在尋找的標記正則表達式,然後在功能增加的情況下做了更換。
的JavaScript的好處是,你可以擴展基本類型的功能,您可以添加一個方法到String
本身:
// v --> array of finds
// s --> array of replaces
String.prototype.replaceAll = function(v, s){
var i , ret = this;
for(i=0;i<v.length;i++)
ret = ret.replace(v[i], s[i]);
return ret;
}
,現在使用它:
alert("a b c d e f".replaceAll(["a", "b"], ["1", "2"])); //replaces a b with 1 2
演示是here。
這裏有一些其他答案的組合。我只是喜歡它,因爲替換鍵值聲明
function sanitize(str, replacements) {
var find;
for(find in replacements) {
if(!replacements.hasOwnProperty(find)) continue;
str = str.replace(new RegExp(find, 'g'), replacements[find]);
}
return str;
}
var test = "Odds & ends";
var replacements = {
" ": "-", // replace space with dash
"&": "," // replace ampersand with comma
// add more pairs here
};
cleanStr = sanitize(str, replacements);
我喜歡它,幹得好:) –
你可以創建一個函數,但我不知道一個原生的javascript函數。 –
'myString.replace(「」,「 - 」)'可能不會做你想做的。 '「foo bar baz」.replace(「」,「 - 」)===「foo-bar baz」'。由於模式只替換第一次出現,所以用字符串替換。 –