IT

Java의 split() 메서드는 닷()에서는 동작하지 않습니다.

itgroup 2022. 11. 8. 21:45
반응형

Java의 split() 메서드는 닷()에서는 동작하지 않습니다.

웹 어플리케이션에서 잘못된 부분을 분리하기 위해 간단한 코드 스니펫을 준비했습니다.

public class Main {

    public static void main(String[] args) throws IOException {
        System.out.print("\nEnter a string:->");
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String temp = br.readLine();

        String words[] = temp.split(".");

        for (int i = 0; i < words.length; i++) {
            System.out.println(words[i] + "\n");
        }
    }
}

웹 어플리케이션 JSF를 구축하면서 테스트를 해봤습니다.나는 단지 위의 코드에 있는 이유를 알고 싶다.temp.split(".")동작하지 않습니다.성명서는,

System.out.println(words[i]+"\n"); 

콘솔에는 아무것도 표시되지 않습니다.루프를 통과하지 않는 것을 의미합니다.의 인수를 변경할 때temp.split()다른 캐릭터에게 메서드를 적용하면 평소처럼 잘 작동합니다.뭐가 문제죠?

java.lang.String.split 정규 표현으로 분할합니다..정규 표현에서 "임의의 문자"를 의미합니다.

해라temp.split("\\.").

의 문서에는 다음과 같이 기재되어 있습니다.

지정된 정규 표현과 일치하는 문자열을 분할합니다.

(내 것을 강조합니다.)

점은 정규 표현 구문의 특수 문자입니다.스플릿을 리터럴 문자열 패턴으로 할 경우 split() 파라미터로 사용합니다.

String[] words = temp.split(Pattern.quote("."));

시험:

String words[]=temp.split("\\.");

방법은 다음과 같습니다.

String[] split(String regex) 

"."는 regex의 예약된 문자입니다.

메서드는 문자열이 아닌 정규 표현을 사용하며 점은 정규 표현에서 특별한 의미를 가집니다.그렇게 도망쳐라split("\\.")이중 백슬래시가 필요하고, 두 번째 백슬래시가 첫 번째 백슬래시를 탈출합니다.

\\.답은 간단합니다.여기 간단한 코드가 있습니다.

while (line != null) {
    //             
    String[] words = line.split("\\.");
    wr = "";
    mean = "";
    if (words.length > 2) {
        wr = words[0] + words[1];
        mean = words[2];

    } else {
        wr = words[0];
        mean = words[1];
    }
}
    private String temp = "mahesh.hiren.darshan";

    String s_temp[] = temp.split("[.]");

  Log.e("1", ""+s_temp[0]);

잘 되고 있어요.당신은 그 문서를 읽었습니까?문자열은 정규 표현으로 변환됩니다.

.는 모든 입력 문자와 일치하는 특수 문자입니다.

여느 정규 표현 특수 문자와 마찬가지로, 당신은 탈옥과 함께\추가 정보가 필요합니다.\Java 문자열 이스케이프용입니다.

언급URL : https://stackoverflow.com/questions/7935858/the-split-method-in-java-does-not-work-on-a-dot

반응형