Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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
Java 有没有更好的方法来摆脱这个字符串?_Java_Algorithm_Coldfusion - Fatal编程技术网

Java 有没有更好的方法来摆脱这个字符串?

Java 有没有更好的方法来摆脱这个字符串?,java,algorithm,coldfusion,Java,Algorithm,Coldfusion,在ColdFusion(或Java)中,转换字符串的最快方法是什么: Input: 79827349837493827498 Output: \79\82\73\49\83\74\93\82\74\98 我获取LDAP GUID并将其转义为查询 我可以将其作为一系列中减量,如下所示: <CFSET V1 = ""> <CFSET RetVal = ""> <CFLOOP CONDITION="#V1# NEQ''"> <CFS

在ColdFusion(或Java)中,转换字符串的最快方法是什么:

Input:
79827349837493827498

Output:
\79\82\73\49\83\74\93\82\74\98
我获取LDAP GUID并将其转义为查询

我可以将其作为一系列中减量,如下所示:

  <CFSET V1 = "">
  <CFSET RetVal = "">
  <CFLOOP CONDITION="#V1# NEQ''">
      <CFSET RetVal = RetVal & "\" & MID(V1,1,2)>
      <CFSET V1 = MID(V1,3,2000)>
  </CFLOOP>


但是似乎会有更优雅的东西,比如正则表达式替换。

我还没有测试过这个,所以语法可能会关闭,但您应该能够执行以下操作:

<cfset V1 = REReplace(V1,"([0-9]{2})","\\\1","all")>

那么

<cfset input = "79827349837493827490">
<cfset output = "">

<cfloop from="1" to="#len(input)#" index="count" step="2">
   <cfset output &= "\" & mid(input, count, 2)>
</cfloop>

在Java中,您可以

String text = text.replaceAll("(..)","\\\1");

我不知道ColdFusion,但这里有一个简单的Java方法:

private String injectBackslashes(String string) {
    StringBuffer sb = new StringBuffer();
    for(int i = 0; i < string.length() / 2; ++i)
        sb.append('\\').append(string.substring(2*i, 2*i+2));
    return sb.toString();
}
私有字符串注入反斜杠(字符串){
StringBuffer sb=新的StringBuffer();
对于(int i=0;i
这里是另一种可能的方法

<cfset input = "79827349837493827498"/>
<cfset output = input/>

<cfloop from="#len(output)-2#" to="0" index="i" step="-2">
    <cfset output = insert("\",output,i)/>
</cfloop>

<cfoutput>#output#</cfoutput>

#输出#

cool,我原以为insert()不起作用,但向下循环就行了!美好的不,'to'应该是0,因为insert()函数位置参数为0作为字符串的前缀。这正是在ColdFusion中可以做的。但我相信它是:.replaceAll(“(..”,“\\$1”)-Java反向引用使用美元符号。谢谢。正是我想要的。我刚刚意识到我的示例中没有字符,但LDAP Guid有。因此正则表达式应该更接近(\w{2})。