문제

어떤 정규 패턴이 내가 전달 해야하는지 java.lang.String.split() 메소드 모든 공백 문자 ( '', ' t', ' n'등을 구분 제로 사용하여 문자열을 일련의 하위 문자열로 분할하는 방법?

도움이 되었습니까?

해결책

줄에 뭔가

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

이것은 모든 흰색 공간을 구분표로 그룹화합니다.

그래서 내가 문자열이 있다면 :

"Hello[space][tab]World"

이것은 줄을 생성해야합니다 "Hello" 그리고 "World" 그리고 빈 공간을 생략하십시오 [space] 그리고 [tab].

Vonc이 지적했듯이, Java는 먼저 끈을 특별한 캐릭터로 탈출하려고 시도하고 저것 구문 분석. 당신이 원하는 것은 문자 그대로입니다 "\s", 이는 통과해야합니다 "\\s". 약간 혼란 스러울 수 있습니다.

그만큼 \\s 동일합니다 [ \\t\\n\\x0B\\f\\r]

다른 팁

대부분의 REGEX 방언에는 이런 종류의 일에 사용할 수있는 편리한 캐릭터 요약 세트가 있습니다. 이것들은 기억하기에 좋은 것입니다.

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

\W - 비 단어 문자와 일치합니다.

\s - 흰색 공간 문자와 일치합니다.

\S - 흰색 공간 캐릭터 외에는 일치합니다.

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

\D - 숫자를 제외한 모든 것이 일치합니다.

"Regex Cheatsheets"에 대한 검색은 유용한 요약을 많이 보상해야합니다.

이것을 작동시키기 위해 JavaScript에서, 나는 다음을해야했다 :

myString.split(/\s+/g)

" s+"는 트릭을 수행해야합니다

또한 유니 코드가없는 공간 XA0을 가질 수 있습니다 ...

String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");

Apache Commons Lang은 공백 문자가있는 문자열을 구분 제로 분할하는 방법을 가지고 있습니다.

StringUtils.split("abc def")

http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/stringutils.html#split(java.lang.string)

이것은 정규 패턴보다 사용하기가 더 쉬울 수 있습니다.

그것은 정규 표현이기 때문에, 나는 또한 공백으로 둘러싸여있는 쉼표, 도트 등과 같은 비 알파 너매 숯을 원하지 않을 것이라고 가정합니다 (예 : "1, 2"는 [1] [2])에 둘러싸여 있습니다. 그것은해야한다:

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

아무도 매개 변수가없는 String.split ()를 언급하지 않은 것에 놀랐습니다. 그게 만든 것이 아닌가? 에서와 같이 :

"abc def ghi".split()

다음 명령문을 사용하여 라인별로 문자열을 분할 할 수 있습니다.

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

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

String textStr[] = yourString.split("\\s+");
String str = "Hello   World";
String res[] = str.split("\\s+");

이 코드를 연구하십시오. 행운을 빕니다

    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);

        } 
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top