좋아,이 게시물은 중복 된 게시물이라고 말할 수 있습니다.여러 구분 기호를 사용할 때 자바 문자열 파싱 또는 split() 버그
나는 사용자가 지정한 구분 기호를 삭제하는 일을하고있는 프로그램을 만들고 있습니다. 구분 기호가 하나의 문자 (특수 문자 또는 특수 문자) 인 경우 내 프로그램이 작동합니다. 그러나 사용자 입력이 문자열 인 경우 메시지 문자열에서 구분 기호의 모든 문자를 제거합니다.
ex. 문자열 메시지 = "ab \ nc [d] e {fMardk1g (h) i} j"; 출력은 다음과 같습니다. bcefghij 하지만 예상되는 출력은 abcdefghij
입니다. 패턴 클래스를 처음 사용하기 때문에 문제가있는 곳을 모르겠습니다. 여기
문제의 코드 (나는 그래서이 문제를 분리 할 수있는 테스트 클래스에 넣어)입니다 :수입 있으며, java.util.regex.Pattern을;
public class ParsingTest {
public static void main(String[] args) {
String[] delimiters = { "Mardk1", "\n", "[", "]", "{", "}", "(", ")" };
StringBuilder regexp = new StringBuilder("");
regexp.append("[");
for(String s : delimiters) {
regexp.append("[");
regexp.append(Pattern.quote(s));
regexp.append("]");
}
regexp.append("]");
String message = "ab\nc[d]e{fMardk1g(h)i}j";
StringBuilder result = new StringBuilder("");
String[] a = message.split(regexp.toString());
for(String string : a) {
result.append(string);
}
System.out.println(result);
for(String str: a) System.out.print(str);
System.out.println();
}
}
생성 된 정규식'[Mardk1]'문자 중 하나에 의해 구분됩니다'M, A, R, D, K 또는 1이 포함됩니다 :
정규식을 구축하는 대신 시도 ', 그리고 이것이 여러분이 출력에서'a' 문자를 보지 않는 이유입니다. – rodion