Tôi cần chia Chuỗi của tôi theo khoảng trắng. Đối với điều này, tôi đã cố gắng:
str = "Hello I'm your String";
String[] splited = str.split(" ");
Nhưng nó dường như không hoạt động.
fork
liên kết gần góc trên cùng bên trái.
Tôi cần chia Chuỗi của tôi theo khoảng trắng. Đối với điều này, tôi đã cố gắng:
str = "Hello I'm your String";
String[] splited = str.split(" ");
Nhưng nó dường như không hoạt động.
fork
liên kết gần góc trên cùng bên trái.
Câu trả lời:
Những gì bạn có nên làm việc. Tuy nhiên, nếu các không gian được cung cấp đang mặc định là ... cái gì khác? Bạn có thể sử dụng regex khoảng trắng:
str = "Hello I'm your String";
String[] splited = str.split("\\s+");
Điều này sẽ khiến bất kỳ số lượng không gian liên tiếp nào phân tách chuỗi của bạn thành mã thông báo.
Như một lưu ý phụ, tôi không chắc "tách" là một từ :) Tôi tin rằng trạng thái là nạn nhân của sự chia tách cũng là "chia tách". Đó là một trong những điều khó khăn về ngữ pháp :-) Không cố gắng kén chọn, chỉ cần hình dung tôi sẽ vượt qua nó!
Mặc dù câu trả lời được chấp nhận là tốt, hãy lưu ý rằng bạn sẽ kết thúc bằng một chuỗi trống hàng đầu nếu chuỗi đầu vào của bạn bắt đầu bằng một khoảng trắng. Ví dụ: với:
String str = " Hello I'm your String";
String[] splitStr = str.split("\\s+");
Kết quả sẽ là:
splitStr[0] == "";
splitStr[1] == "Hello";
splitStr[2] == "I'm";
splitStr[3] == "Your";
splitStr[4] == "String";
Vì vậy, bạn có thể muốn cắt chuỗi của mình trước khi tách chuỗi:
String str = " Hello I'm your String";
String[] splitStr = str.trim().split("\\s+");
Sử dụng Stringutils.split()
để phân chia chuỗi bằng cách bước trắng. Ví dụ StringUtils.split("Hello World")
trả về "Xin chào" và "Thế giới";
Để giải quyết trường hợp đã đề cập, chúng tôi sử dụng phương pháp phân tách như thế này
String split[]= StringUtils.split("Hello I'm your String");
Khi chúng ta in mảng phân tách, đầu ra sẽ là:
xin chào
Tôi là
của bạn
Chuỗi
Thử
String[] splited = str.split("\\s");
http://doad.oracle.com/javase/tutorial/essential/regex/pre_char_groupes.html
nếu bằng cách nào đó bạn không muốn sử dụng phương thức phân tách Chuỗi thì bạn có thể sử dụng lớp StringTokenizer trong Java dưới dạng ..
StringTokenizer tokens = new StringTokenizer("Hello I'm your String", " ");
String[] splited = new String[tokens.countTokens()];
int index = 0;
while(tokens.hasMoreTokens()){
splited[index] = tokens.nextToken();
++index;
}
OK, vì vậy chúng tôi phải chia tách vì bạn đã có câu trả lời tôi sẽ khái quát hóa nó.
Nếu bạn muốn phân tách bất kỳ chuỗi nào bằng dấu cách, dấu phân cách (ký tự đặc biệt).
Đầu tiên, loại bỏ không gian hàng đầu khi chúng tạo ra hầu hết các vấn đề.
str1 = " Hello I'm your String ";
str2 = " Are you serious about this question_ boy, aren't you? ";
Đầu tiên loại bỏ không gian hàng đầu có thể là không gian, tab, vv
String s = str1.replaceAll("^\\s+","");//starting with whitespace one or more
Bây giờ nếu bạn muốn phân chia theo không gian hoặc bất kỳ char đặc biệt.
String[] sa = s.split("[^\\w]+");//split by any non word char
Nhưng vì w chứa [a-zA-Z_0-9], vì vậy nếu bạn muốn phân tách bằng dấu gạch dưới (_) cũng sử dụng
String[] sa = s.split("[!,? ._'@]+");//for str2 after removing leading space
replaceAll("^\\s+","")
đã cứu ngày của tôi. Điều đó đã làm việc cho trường hợp của tôi. Cảm ơn bạn
bạn có thể tạo chuỗi bằng cách sử dụng mã dưới đây
String thisString="Hello world";
String[] parts = theString.split(" ");
String first = parts[0];//"hello"
String second = parts[1];//"World"
Vì đã được một lúc kể từ khi những câu trả lời này được đăng, đây là một cách khác hiện tại để làm những gì được hỏi:
List<String> output = new ArrayList<>();
try (Scanner sc = new Scanner(inputString)) {
while (sc.hasNext()) output.add(sc.next());
}
Bây giờ bạn có một danh sách các chuỗi (được cho là tốt hơn một mảng); nếu bạn cần một mảng, bạn có thể làmoutput.toArray(new String[0]);
Đơn giản để nhổ chuỗi theo không gian
String CurrentString = "First Second Last";
String[] separated = CurrentString.split(" ");
for (int i = 0; i < separated.length; i++) {
if (i == 0) {
Log.d("FName ** ", "" + separated[0].trim() + "\n ");
} else if (i == 1) {
Log.d("MName ** ", "" + separated[1].trim() + "\n ");
} else if (i == 2) {
Log.d("LName ** ", "" + separated[2].trim());
}
}