在java和javascript中的字符之前添加双斜杠

时间:2015-05-20 18:02:26

标签: java javascript regex escaping special-characters

我想在java和javascript中的String中为所有这些字符添加双斜杠\\

!"#$%&'()*+,./:;<=>?@[\]^`{|}~

例如Test!test将是Test\\!test和                               Test\test将为Test\\\test。 我是否必须在单独的语句中替换它们,或者有一种方法可以在一个语句中编写它。谢谢。

4 个答案:

答案 0 :(得分:0)

您可以使用前瞻符合指定字符前的位置并替换该位置:

(?=[!"#$%&'()*+,.\/:;<=>?@[\]\\^`{|}~])

并替换为\\

答案 1 :(得分:0)

爪哇:

String oldString = "!\"#$%&'()*+,./:;<=>?@[\\]^`{|}~";
String newString = "";
for (int i = 0; i < oldString.length(); i++)
{
    newString += "//" + oldString.charAt(i);
}

JavaScript的:

var oldString = "!\"#$%&'()*+,./:;<=>?@[\\]^`{|}~";
var newString = "";

for (var i = 0; i < oldString.length; i++)
{
    newString += "//" + oldString.charAt(i);
}

答案 2 :(得分:0)

@ DUUUDE123我们从Web服务返回的一些数据只有一个我们可以用来识别对象的唯一值...它可能包含特殊字符,我们在页面的html标签上使用了这个字符串,但是当它有特殊的时候字符,jquery选择器不起作用,除非我们转义这些特殊字符添加&#34; //&#34;在他们面前。但这实际上是一个非常愚蠢的想法...现在我使用java String默认的hashCode方法来散列这个String,并且我得到了一个使用相同简单算法的js方法。尽管hashCode不能保证是唯一的,但在这种情况下它应该足够好了。谢谢。

答案 3 :(得分:0)

是的,有一种方法可以使用正则表达式在两种语言的一个语句中编写它。这有点令人困惑,因为你必须逃避一些特殊字符。

在Java中:

String test = "A!B\"C#D$E%F&G'H(I)J*K+L,M.N/O:P;Q<R=S>U?U@V[W\\\\X]Y^Z`A{B|C}D~";
String escaped = test.replaceAll("([!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])", "\\\\\\\\$1");
System.out.println(escaped);
//Prints: A\\!B\\"C\\#D\\$E\\%F\\&G\\'H\\(I\\)J\\*K\\+L\\,M\\.N\\/O\\:P\\;Q\\<R\\=S\\>U\\?U\\@V\\[W\\X\\]Y\\^Z\\`A\\{B\\|C\\}D\\~

在Javascript中:

var test = "A!B\"C#D$E%F&G'H(I)J*K+L,M.N/O:P;Q<R=S>U?U@V[W\\\\X]Y^Z`A{B|C}D~"
var escaped = test.replace(/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g,'\\\\$1')
alert (escaped)
//Shows: A\\!B\\"C\\#D\\$E\\%F\\&G\\'H\\(I\\)J\\*K\\+L\\,M\\.N\\/O\\:P\\;Q\\<R\\=S\\>U\\?U\\@V\\[W\\X\\]Y\\^Z\\`A\\{B\\|C\\}D\\~