programing

공백 문자를 구분자로 하여 문자열을 분할하는 방법

luckcodes 2022. 7. 19. 22:15

공백 문자를 구분자로 하여 문자열을 분할하는 방법

어떤 정규식 패턴을 전달해야 합니까?java.lang.String.split()모든 공백 문자를 사용하여 문자열을 하위 문자열 배열로 분할합니다( ).' ','\t','\n', 등)을 구분자로 지정합니다.

어떤 종류의 것 같은...

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

그러면 모든 공백이 구분자로 그룹화됩니다.

그래서 만약 내가 문자열을 가지고 있다면:

"Hello[space character][tab character]World"

이 정도면 끈이 생깁니다."Hello"그리고."World"빈칸은 생략합니다.[space]및 그[tab].

VonC가 지적한 바와 같이 백슬래시는 이스케이프되어야 합니다.Java는 처음에 문자열을 특수 문자에 이스케이프하고 그것을 구문 분석하기 위해 송신하기 때문입니다.네가 원하는 건 문자 그대로야"\s"그 말은 즉, 넌 합격해야 한다는 거야"\\s"조금 헷갈릴 수 있어요.

\\s와 동등하다[ \\t\\n\\x0B\\f\\r].

대부분의 정규식 사투리에는 이런 종류의 편리한 문자 요약을 사용할 수 있습니다.다음은 기억해야 할 좋은 예입니다.

\w- 임의의 단어 문자와 일치합니다.

\W- 단어 이외의 문자와 일치합니다.

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

\S- 공백 문자를 제외한 모든 문자와 일치합니다.

\d- 임의의 숫자와 일치합니다.

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

"Regex Cheatsheets"를 검색하면 유용한 요약이 많이 표시됩니다.

이것을 Javascript로 동작시키기 위해서, 다음의 작업을 실시할 필요가 있었습니다.

myString.split(/\s+/g)

"\\s+"가 효과적입니다.

또한 UniCode 비브레이킹스페이스 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)

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

이는 정규 표현이며 쉼표, 점 등 영숫자가 아닌 문자도 공백("하나, 2"는 [1][2]를 부여해야 함)으로 둘러싸이는 것을 원하지 않을 것으로 생각되므로 다음과 같이 해야 합니다.

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

Java Ragex Engine의 특수 캐릭터 중 하나를 사용하여 분할하기만 하면 됩니다.

바로 WhiteSpace 캐릭터입니다.

  • \d는 숫자를 나타냅니다.[0-9]
  • \D는 숫자가 아닌 것을 나타냅니다.[^0-9]
  • \s 다음과 같은 공백 문자를 나타냅니다.[ \t\n\x0B\f\r]
  • \S 공백이 아닌 문자를 나타냅니다.[^\s]
  • \v 세로 공백 문자를 나타냅니다.[\n\x0B\f\r\x85\u2028\u2029]
  • \V 수직이 아닌 공백 문자를 나타냅니다.[^\v]
  • \w 단어 문자를 다음과 같이 나타냅니다.[a-zA-Z_0-9]
  • \W는 비단어 문자를 나타냅니다.[^\w]

여기서 기억해야 할 중요한 점은 작은 레터 캐릭터가\s의 공백을 .[ ]탭 , " "[ ]뭐 비슷한 거라도.

그러니 이런 식으로 유언장을 써보시면..

String theString = "Java<a space><a tab>Programming"
String []allParts = theString.split("\\s+");

원하는 출력을 얻을 수 있습니다.


매우 유용한 링크:


호프, 이게 너에게 가장 도움이 될 거야!!!

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

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

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

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

유니코드 공백으로 문자열을 분할하려면

s.split("(?U)\\s+")
         ^^^^

(?U)inline embedded flag 옵션은 이 기능을 활성화하는 것과 동일합니다.\s공백 유니코드 카테고리의 모든 문자와 일치하는 줄임말 문자 클래스.

공백으로 분할하여 결과 배열에 공백 공간을 유지하려면 다음과 같이 하십시오.

s.split("(?U)(?<=\\s)(?=\\S)|(?<=\\S)(?=\\s)")

regex 데모를 참조하십시오.Java 데모 참조:

String s = "Hello\t World\u00A0»";
System.out.println(Arrays.toString(s.split("(?U)\\s+"))); // => [Hello, World, »]
System.out.println(Arrays.toString(s.split("(?U)(?<=\\s)(?=\\S)|(?<=\\S)(?=\\s)")));
// => [Hello,    , World,  , »]

탭이 아닌 공백으로만 분할하려는 경우 다음을 사용할 수 있습니다.

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

텍스트 라인: "첫 번째 단어의 탭"

단어: [igno\tre, the, tab, in, the, first, word]

이 코드를 확인합니다.행운을 빌어요

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

        } 
    }
}

언급URL : https://stackoverflow.com/questions/225337/how-to-split-a-string-with-any-whitespace-chars-as-delimiters