我试图用新帐户更新存储的NT帐户(域\用户)。新帐户以String对象形式出现。使用包含反斜杠的字符串替换字符串的最佳方法()
我打电话给我的replaceAccount方法来执行此操作,运行这一行:
tempAcct.setDefinition(ExtractNTAccount.matcher(tempAcct.getDefinition()).replaceFirst("nt=\""+newNTLogin+"\""));
如果NT帐户是“HOME \ JDOE”,而我则输出tempAcct的定义字段,我看到了NT请改为以“HOMEjdoe”登录。
通过检查replaceFirst方法的javadoc,下面可以读到:
“需要注意的是反斜杠()和美元 符号($)在替换字符串 可能导致的结果是不同的 比如果它被当作 文字替换字符串;见 Matcher.replaceFirst(java.lang.String中) 使用 Matcher.quoteReplacement(java.lang.String中) 打压 这些字符的特殊意义,如果期望“。
所以,我发现的,如果不是路过的NT帐户,因为它是( “HOME \ JDOE”)我通过“HOME” + Matcher.quoteReplacement( “\\”)+ “JDOE”或“HOME \\\\ jdoe”,然后在使用replaceFirst方法后得到正确的结果。
这是我们可以使用的最好方法,或者我完全误解了如何使用Matcher.quoteReplacement()方法?
谢谢。我其实只是发现了这一点。我在错误的级别使用它。 – Dan 2010-08-17 17:28:01