공백 문자가있는 문자열을 구분 기호로 분할하는 방법


555

무엇 정규식 패턴을 통과 I를 필요가 java.lang.String.split() 모든 공백 문자 (사용하여 문자열의 배열로 문자열을 분할 ' ', '\t', '\n'구분 기호로 등)?

답변:


955

라인에 뭔가

myString.split("\\s+");

모든 공백을 구분 기호로 그룹화합니다.

따라서 문자열이 있으면

"Hello[space][tab]World"

이것은 문자열을 산출 "Hello"하고 "World"와 사이의 빈 공간을 생략 해야 [space]합니다 [tab].

VonC는 지적 자바 먼저 특수 문자로 문자열을 탈출을 시도하고 보내기 때문에, 백 슬래시는 탈출해야 한다는 구문 분석 할 수 있습니다. 원하는 것은 리터럴 "\s"입니다. 즉, 전달해야합니다 "\\s". 약간 혼란 스러울 수 있습니다.

\\s동일합니다 [ \\t\\n\\x0B\\f\\r].


1
상기시켜 주셔서 감사합니다. 난 그냥 엉덩이에서 코딩했다 :)
Henrik Paul

34
trim()먼저 다음 을 수행해야합니다 trim().split("\\s++").-그렇지 않으면`abc`를 분할하면 두 개의 빈 문자열이 먼저 나옵니다.
Marcus Junius Brutus

답의 끝 부분에 왜 네 개의 백 슬래시를 사용 했습니까? 즉. "\\\\s"?
Michael Borkowski

"".trim (). split ( "\\ s +")-빈 문자열 분할의 길이는 1입니다. "term".trim (). split ( "\\ s +")-길이도 1입니다. .
PaulSchell

88

대부분의 정규식 방언에는 이런 종류의 물건에 사용할 수있는 편리한 문자 요약이 있습니다.

\w -모든 단어 문자와 일치합니다.

\W -단어가 아닌 문자와 일치합니다.

\s -공백 문자와 일치합니다.

\S -공백 문자 이외의 문자와 일치합니다.

\d -모든 숫자와 일치합니다.

\D -숫자를 제외한 모든 항목과 일치합니다.

"Regex Cheatsheets"를 검색하면 유용한 요약이 많이 나옵니다.




64

Javascript 에서이 작업 을 수행하려면 다음을 수행해야했습니다.

myString.split(/\s+/g)

15
이것은 자바 스크립트입니다. 나도주의를 기울이지 않았다 :)
miracle2k

14
죄송합니다. 내 실수. 아마도이 답변은 Javascript 답변을 찾는 동안이 스레드에서 우연히 발견되는 다른 사람들에게 여전히 도움이 될 것입니다. :-)
Mike Manard

하하 저는 JavaScript에 대한 답을 찾고 있었는데 실수로이 질문을 겪고 나서 떠나기 전에 답을 확인했습니다. +1.
Kris

대단해! 이 질문에 대한 답변이 잘못된 질문에 대한 답변이 되었더라도 누군가에게 유용한 것으로 판명되었습니다. :-)
Mike Manard

이것은 또한 서버 인수를 분할하는 데 필요한 많은 도움이되었습니다. :)
ProgrammerPlays


11

또한 UniCode non-breaking space xA0이있을 수 있습니다 ...

String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking

이것은 나를 도와줍니다!
Surasin Tancharoen

10
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");

@ Stephan 나는 그것을 보지 못했습니다.
Arrow


2

정규 표현식이므로, 공백으로 둘러싸 일 수있는 쉼표, 점 등과 같은 영숫자가 아닌 문자를 원하지 않는다고 가정합니다 (예 : "1, 2"는 [1] [2]를 제공해야 함). 그것은해야한다:

myString.split(/[\s\W]+/)

1

다음 명령문을 사용하여 줄 바꿈으로 문자열을 분할 할 수 있습니다.

 String textStr[] = yourString.split("\\r?\\n");

다음 명령문을 사용하여 공백으로 문자열을 분할 할 수 있습니다.

String textStr[] = yourString.split("\\s+");


-1

이 코드를 공부하십시오. 행운을 빈다

    import java.util.*;
class Demo{
    public static void main(String args[]){
        Scanner input = new Scanner(System.in);
        System.out.print("Input String : ");
        String s1 = input.nextLine();   
        String[] tokens = s1.split("[\\s\\xA0]+");      
        System.out.println(tokens.length);      
        for(String s : tokens){
            System.out.println(s);

        } 
    }
}

답을 자세히 설명해 주시겠습니까?
Stephan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.