공백 문자를 구분자로 하여 문자열을 분할하는 방법
어떤 정규식 패턴을 전달해야 합니까?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")
이것은 정규식 패턴보다 사용하기 쉬울 수 있습니다.
이는 정규 표현이며 쉼표, 점 등 영숫자가 아닌 문자도 공백("하나, 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)")
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
'programing' 카테고리의 다른 글
scanf의 단점 (0) | 2022.07.19 |
---|---|
Vuex 스토어 상태 변경 시 DOM 업데이트 (0) | 2022.07.19 |
Linux에서 "system"과 "exec"의 차이점은 무엇입니까? (0) | 2022.07.19 |
VueJS 메서드를 타이프스크립트 농담으로 어떻게 부를 수 있을까요? (0) | 2022.07.19 |
배치 파일의 함수 / 방법과 같은 것입니까? (0) | 2021.01.17 |