Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何全局替换JavaScript字符串中的正斜杠?_Javascript - Fatal编程技术网

如何全局替换JavaScript字符串中的正斜杠?

如何全局替换JavaScript字符串中的正斜杠?,javascript,Javascript,如何全局替换JavaScript字符串中的正斜杠?使用带有g修饰符的正则表达式文本,并用反斜杠转义正斜杠,使其不会与分隔符冲突 var str = 'some // slashes', replacement = ''; var replaced = str.replace(/\//g, replacement); 这是你想要的吗 'string with / in it'.replace(/\//g, '\\'); 以下操作可以,但只能替换一次: "string".replace('/',

如何全局替换JavaScript字符串中的正斜杠?

使用带有
g
修饰符的正则表达式文本,并用反斜杠转义正斜杠,使其不会与分隔符冲突

var str = 'some // slashes', replacement = '';
var replaced = str.replace(/\//g, replacement);
这是你想要的吗

'string with / in it'.replace(/\//g, '\\');

以下操作可以,但只能替换一次:

"string".replace('/', 'ForwardSlash');
对于全局替换,或者如果您更喜欢正则表达式,只需转义斜杠即可:

"string".replace(/\//g, 'ForwardSlash');
不使用regex(尽管我只会在搜索字符串为用户输入时这样做):


提议的regex
/\//g
对我不起作用;行的其余部分(
//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;   
}
函数条斜杠(x)
{
变量y=“”;
对于(i=0;i
您需要将正斜杠换行,以避免跨浏览器问题或//注释

str = 'this/that and/if';

var newstr = str.replace(/[/]/g, 'ForwardSlash');

这是Christopher Lincolns的想法,但代码正确:

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;
}
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');

第一个代码段不进行全局替换。不太确定如何用非正则表达式的方式进行全局替换。啊,对了,我只是用斜杠来尝试。可以使用
“string.replace('/','ForwardSlash','g')
完成,但这是一个非标准参数,仅在Firefox afaik中有效。
“string.replace(//\///g,'ForwardSlash')
起作用,但是从中删除/g,它就不起作用了。@johntrepreneur g表示它是一个全局替换,即它替换匹配的
/
的所有实例。没有g,它只替换一个实例。如果删除
/g
,则会完全破坏正则表达式,因为最后一个/是结束分隔符。@RameshRajendran API就是这样的。。默认情况下,它只替换一次,然后在找到要替换的对象时停止。另请参见请注意,我不确定此解决方案的性能与建议的阵列拆分/加入解决方案相比如何。。。。我被这个绊倒了。。。使用更智能的语法高亮显示尝试不同的IDE。不要依赖代码编辑器的颜色,但要相信有状态解析器在运行时正确标记代码的能力。
var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');
function replace(str,find,replace){
    if (find !== ""){
        str = str.toString().split(find).join(replace);
    }
    return str;
}
str.replace(new RegExp('/'), 'foobar');
str.replace(new RegExp('/', 'g'), 'foobar');