public Matcher appendReplacement(StringBuffer sb, String replacement)
방법 왜 우리가 대신 떨어져 입력 문자열을 사용하지 않는 이유 버퍼 오브젝트를 사용한다 appenedReplacement()
방법은?사용() Matcher를 클래스 다음
public Matcher appendReplacement(StringBuffer sb, String replacement)
방법 왜 우리가 대신 떨어져 입력 문자열을 사용하지 않는 이유 버퍼 오브젝트를 사용한다 appenedReplacement()
방법은?사용() Matcher를 클래스 다음
StringBuffer
대신 String
을 전달하고 추가 작업을 수행하는 경우 결과를 얻으려면 해당 문자열을 다시 실행해야합니다. String은 불변이므로 수행 된 모든 opertaion이 새 String을 만들고 메소드를 호출했습니다. appenedReplacement()
은 이전 실제 문자열의 refrence를 계속합니다.
StringBuffer
은 참조를 변경하지 않고 문자열을 추가하는 기능을 제공합니다. 따라서 결과가 String
인 경우에도 StringBuffer에서 수행 된 모든 작업은 그대로 유지됩니다.
appendReplacement()
방법은 다음 작업을 수행합니다
그것은 APPEND 위치에서 시작, 입력 순서의 문자를 읽고, 주어진 문자열로 추가 완충기. 이전의 마지막 문자, 즉 인덱스 start() - 1에있는 문자를 읽은 후 중지합니다.
주어진 대체 문자열을 문자열 버퍼에 추가합니다.
이 정규 표현 엔진의 추가 위치를 마지막에 일치하는 문자 의 인덱스에 1을 더한 값, 즉 end()로 설정합니다.
이 방법은 appendTail 함께 루프에서 사용되는 방법을 발견하기위한 것이다. 다음 코드는, 예를 들어, 표준 출력 스트림에 마당에 한 개 두 개를 쓴다 :
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("one cat two cats in the yard");
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, "dog");
}
m.appendTail(sb);
System.out.println(sb.toString());
String
으로 클래스는 StringBuffer
이 appendReplacement()
기능에 사용되는 이유는 어떤 append()
기능은 그게 전부가 없습니다.
고마워요.하지만 제 질문이 아니 었습니다. 어떻게, 왜 우리가 그것을 사용하는지, 버퍼 객체를 사용하지 말고 알고 싶습니다. 입력 문자열 시퀀스를 다시 작성할 수 없습니까? 가능한 경우 appendTail() 메서드를 사용할 필요가 없습니다. 입력 시퀀스를 직접 다시 쓸 수있는 방법이 있습니까? – Light
감사합니다. 그러나 문자열을 다시 작성한 후에는 실제 참조가 변경됩니까? – Light