【问题标题】:Add double slash before characters in both java and javascript在 java 和 javascript 中的字符前添加双斜杠
【发布时间】:2015-05-20 18:02:26
【问题描述】:

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

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

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

【问题讨论】:

  • 你尝试过正则表达式吗?
  • 我的答案如下:-) .................... ..................................................... .........................................真正的问题应该是为什么你需要这样做...

标签: java javascript regex escaping special-characters


【解决方案1】:

您可以使用前瞻来匹配指定字符之前的位置并替换该位置:

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

并替换为\\

【讨论】:

【解决方案2】:

Java:

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

【讨论】:

    【解决方案3】:

    @DUUUDE123 我们从 web 服务返回的一些数据只有一个唯一值,我们可以使用它来识别对象...并且它可能包含特殊字符,我们在页面 html 标签上使用了这个字符串,但是当它有特殊字符,jquery 选择器不起作用,除非我们转义这些特殊字符,在它们之前添加“//”。但这实际上是一个非常愚蠢的想法......现在我使用java String默认的hashCode方法对这个String进行哈希处理,并且我得到了一个具有相同简单算法的js方法。虽然不保证 hashCode 是唯一的,但在这种情况下应该已经足够好了。谢谢。

    【讨论】:

      【解决方案4】:

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

      在 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\\~
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-18
        相关资源
        最近更新 更多