2013-01-15 37 views
6

Cách dễ nhất để nhận mọi từ trong chuỗi khác với từ cuối cùng trong chuỗi là gì? Cho đến bây giờ tôi đã được sử dụng đoạn mã sau để có được những lời cuối cùng:cách dễ nhất để nhận được mọi từ ngoại trừ từ cuối cùng từ một chuỗi

String listOfWords = "This is a sentence"; 
String[] b = listOfWords.split("\\s+"); 
String lastWord = b[b.length - 1]; 

Và sau đó nhận được phần còn lại của chuỗi bằng cách sử dụng phương pháp này để remove từ cuối cùng từ chuỗi.

Tôi không muốn phải sử dụng phương pháp xóa, có cách nào tương tự với bộ mã trên để nhận chuỗi chuỗi thay đổi không có từ cuối cùng và không gian cuối cùng không?

+0

Bạn có muốn mỗi từ là một chuỗi riêng biệt, hoặc là một chuỗi chứa tất cả mọi thứ nhưng từ cuối cùng ok, quá? – jlordo

+0

Tôi muốn mọi từ khác với từ cuối cùng nằm trong 1 chuỗi, và sau đó từ cuối cùng nằm trong một chuỗi khác. – Digitalwolf

+0

hãy hỏi loại Q này trong http://codereview.stackexchange.com ......... bạn có thể nhận được câu trả lời hay hơn – sunleo

Trả lời

16

Như thế này:

String test = "This is a test"; 
    String firstWords = test.substring(0, test.lastIndexOf(" ")); 
    String lastWord = test.substring(test.lastIndexOf(" ") + 1); 
5

bạn có thể nhận được các lastIndexOf các khoảng trắng và sử dụng chuỗi như dưới đây:

  String listOfWords = "This is a sentence"; 
     int index= listOfWords.lastIndexOf(" "); 
     System.out.println(listOfWords.substring(0, index)); 
    System.out.println(listOfWords.substring(index+1)); 

Output:

 This is a 
     sentence 
+0

Cảm ơn đây là những gì tôi đang tìm kiếm – Digitalwolf

+0

@Digitalwolf bạn được chào đón :) – PermGenError

+0

Điều này là ok nhưng thêm khoảng trống cuối cùng .... – Banku

4

Hãy thử sử dụng các phương pháp String.lastIndexOf kết hợp với String.substring.

String listOfWords = "This is a sentence"; 
String allButLast = listOfWords.substring(0, listOfWords.lastIndexOf(" ")); 
3

tôi đã thêm một dòng vào mã của bạn, Không loại bỏ ở đây

String listOfWords = "This is a sentence";  
    String[] b = listOfWords.split("\\s+"); 
    String lastWord = b[b.length - 1]; 
    String rest = listOfWords.substring(0,listOfWords.indexOf(lastWord)).trim(); // Added 
    System.out.println(rest); 
2

này sẽ phù hợp với nhu cầu của bạn:

.split("\\s+[^\\s]+$|\\s+") 

Ví dụ:

"This is a sentence".split("\\s+[^\\s]+$|\\s+"); 

Returns:

[This, is, a] 
+0

Vì một số lý do tôi tiếp tục nhận được: ** [Ljava.lang.String; @ ca0b6 ** khi tôi chạy regex. Ý tưởng nào? – Digitalwolf

+0

@Digitalwolf Vì 'split' trả về một mảng và' Ljava.lang.String; @ ca0b6' là biểu diễn của một chuỗi các chuỗi (tức là khi gọi 'myArray.toString()'). Chỉ cần sử dụng 'Arrays.asList (myArray)' (ví dụ 'Arrays.asList (" Đây là một câu ".split (" \\ s + [^ \\ s] + $ | \\ s + "))') để lấy kết quả tôi cung cấp, vì danh sách có biểu diễn * tốt hơn * (nhiều hơn * thân thiện với người dùng * giả sử ';)'). – sp00m

+0

Oh ya, xin lỗi sai lầm ngớ ngẩn = D cảm ơn – Digitalwolf

1

public class stringArray {

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 

    String sentense="this is a sentence"; 

    int index=sentense.lastIndexOf(" "); 

    System.out.println(sentense.substring(0,index)); 

} 

}

Các vấn đề liên quan