[英]How to globally replace a forward slash in a JavaScript string?
如何全局替換 JavaScript 字符串中的正斜杠?
以下會做,但只會替換一次出現:
"string".replace('/', 'ForwardSlash');
對於全局替換,或者如果您更喜歡正則表達式,您只需要轉義斜杠:
"string".replace(/\//g, 'ForwardSlash');
使用帶有g
修飾符的正則表達式文字,並用反斜杠轉義正斜杠,這樣它就不會與分隔符發生沖突。
var str = 'some // slashes', replacement = '';
var replaced = str.replace(/\//g, replacement);
不使用正則表達式(雖然我只會在搜索字符串是用戶輸入的情況下這樣做):
var str = 'Hello/ world/ this has two slashes!';
alert(str.split('/').join(',')); // alerts 'Hello, world, this has two slashes!'
您需要包裝正斜杠以避免跨瀏覽器問題或//注釋掉。
str = 'this/that and/if';
var newstr = str.replace(/[/]/g, 'ForwardSlash');
這對我將"//"
變成了"/"
。
str.replace(/\/\//g, '/');
這是你想要的嗎?
'string with / in it'.replace(/\//g, '\\');
嗨,上面腳本中的一個小更正……上面的腳本在顯示輸出時跳過了第一個字符。
function stripSlashes(x)
{
var y = "";
for(i = 0; i < x.length; i++)
{
if(x.charAt(i) == "/")
{
y += "";
}
else
{
y+= x.charAt(i);
}
}
return y;
}
這是克里斯托弗林肯的想法,但代碼正確:
function replace(str,find,replace){
if (find != ""){
str = str.toString();
var aStr = str.split(find);
for(var i = 0; i < aStr.length; i++) {
if (i > 0){
str = str + replace + aStr[i];
}else{
str = aStr[i];
}
}
}
return str;
}
示例用法:
var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');
Javascript 全局字符串替換是不必要的復雜。 這個功能解決了這個問題。 性能影響可能很小,但我相信它可以忽略不計。
這是一個替代函數,看起來更簡潔,但平均比上述函數慢 25% 到 20%:
function replace(str,find,replace){
if (find !== ""){
str = str.toString().split(find).join(replace);
}
return str;
}
您可以創建一個RegExp
對象以使其更具可讀性
str.replace(new RegExp('/'), 'foobar');
如果要替換所有這些,請添加"g"
標志
str.replace(new RegExp('/', 'g'), 'foobar');
var str = '/questions'; // input: "/questions"
while(str.indexOf('/') != -1){
str = str.replace('/', 'http://stackoverflow.com/');
}
alert(str); // output: "http://stackoverflow.com/questions"
建議的正則表達式/\\//g
對我不起作用; 該行的其余部分( //g, replacement);
) 被注釋掉了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.