Có gì mẫu regex sẽ cần tôi để vượt qua để java.lang.String.split()
chia một chuỗi thành một mảng của chuỗi con sử dụng tất cả các ký tự khoảng trắng ( ' '
, '\t'
, '\n'
, vv) như delimiters?
Có gì mẫu regex sẽ cần tôi để vượt qua để java.lang.String.split()
chia một chuỗi thành một mảng của chuỗi con sử dụng tất cả các ký tự khoảng trắng ( ' '
, '\t'
, '\n'
, vv) như delimiters?
Câu trả lời:
Một cái gì đó trong dòng
myString.split("\\s+");
Nhóm này tất cả các khoảng trắng như là một dấu phân cách.
Vì vậy, nếu tôi có chuỗi:
"Hello[space][tab]World"
Điều này sẽ mang lại các chuỗi "Hello"
và "World"
bỏ qua khoảng trống giữa [space]
và [tab]
.
Như VonC đã chỉ ra, dấu gạch chéo ngược phải được thoát, vì trước tiên Java sẽ cố thoát chuỗi thành một ký tự đặc biệt và gửi nó để được phân tích cú pháp. Những gì bạn muốn, là nghĩa đen "\s"
, có nghĩa là, bạn cần phải vượt qua "\\s"
. Nó có thể có một chút khó hiểu.
Điều \\s
này tương đương với [ \\t\\n\\x0B\\f\\r]
.
trim()
trước tiên bạn cần : trim().split("\\s++")
- nếu không, ví dụ: tách `abc` sẽ phát ra hai chuỗi trống trước.
"\\\\s"
?
Trong hầu hết các phương ngữ regex, có một tập hợp các tóm tắt ký tự thuận tiện mà bạn có thể sử dụng cho loại điều này - đây là những điều tốt để nhớ:
\w
- Phù hợp với bất kỳ nhân vật từ.
\W
- Phù hợp với bất kỳ ký tự không từ.
\s
- Phù hợp với bất kỳ nhân vật không gian trắng.
\S
- Phù hợp với bất cứ điều gì trừ các nhân vật không gian trắng.
\d
- Phù hợp với bất kỳ chữ số.
\D
- Phù hợp với bất cứ điều gì ngoại trừ chữ số.
Một tìm kiếm cho "Regex Cheatsheets" sẽ thưởng cho bạn rất nhiều bản tóm tắt hữu ích.
Để làm việc này trong Javascript , tôi phải làm như sau:
myString.split(/\s+/g)
"\\ s +" nên thực hiện các mẹo
Ngoài ra, bạn có thể có một không gian không phá vỡ UniCode xA0 ...
String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
Apache Commons Lang có một phương thức để phân tách một chuỗi với các ký tự khoảng trắng dưới dạng các dấu phân cách:
StringUtils.split("abc def")
Điều này có thể dễ sử dụng hơn một mẫu regex.
bạn có thể phân tách một chuỗi theo ngắt dòng bằng cách sử dụng câu lệnh sau:
String textStr[] = yourString.split("\\r?\\n");
bạn có thể phân tách một chuỗi theo khoảng trắng bằng cách sử dụng câu lệnh sau:
String textStr[] = yourString.split("\\s+");
String str = "Hello World";
String res[] = str.split("\\s+");
Nghiên cứu mã này .. chúc may mắn
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);
}
}
}