Я пытаюсь обновить сохраненную учетную запись NT (домен \ пользователь) новой учетной записью.Новая учетная запись поставляется в виде объекта String.
Я вызываю мой метод replaceAccount, чтобы выполнить это, запустив эту строку:
tempAcct.setDefinition(ExtractNTAccount.matcher(tempAcct.getDefinition()).replaceFirst("nt=\""+newNTLogin+"\""));
Если учетной записью NT является «HOME \ jdoe», иЗатем я вывожу поле определения tempAcct, вместо этого я вижу логин NT как "HOMEjdoe".
Проверяя метод javadoc replaceFirst, можно прочитать следующее:
"Примечаниечто обратная косая черта () и знаки доллара ($) в строке замены могут привести к тому, что результаты будут отличаться от результатов, которые можно было бы обработать как строку замещения литерала; см. Matcher.replaceFirst (java.lang.String).java.lang.String) для подавления специального значения этих символов, если это необходимо. "
Итак, я обнаружил, что если вместо передачи учетной записи NT как есть (" HOME \ jdoe") Я передаю " HOME "+ Matcher.quoteReplacement (" \\ ") +" jdoe " или " HOME \\\\ jdoe ", после чего я получаю правильные результатыиспользуя метод replaceFirst.
Это лучший методмы можем использовать, или я совершенно не понимаю, как использовать метод Matcher.quoteReplacement ()?