공백 숯으로 구분자로 문자열을 분할하려면 어떻게해야합니까?
-
03-07-2019 - |
문제
어떤 정규 패턴이 내가 전달 해야하는지 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")
이것은 정규 패턴보다 사용하기가 더 쉬울 수 있습니다.
그것은 정규 표현이기 때문에, 나는 또한 공백으로 둘러싸여있는 쉼표, 도트 등과 같은 비 알파 너매 숯을 원하지 않을 것이라고 가정합니다 (예 : "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);
}
}
}