2015-06-02 22 views
6

Tôi có một phương pháp trọng với String trả về String trong định dạng của:Cách tách chuỗi trước dấu phẩy đầu tiên?

"abc,cde,def,fgh" 

Tôi muốn chia nội dung chuỗi thành hai phần:

  1. Chuỗi trước dấu phẩy đầu tiên và

  2. Chuỗi sau dấu phẩy đầu tiên

phương pháp trọng của tôi là:

@Override 
protected void onPostExecute(String addressText) { 

    placeTitle.setText(addressText); 
} 

Bây giờ làm thế nào để chia chuỗi thành hai phần, vì vậy mà tôi có thể sử dụng chúng để thiết lập các văn bản trong hai khác nhau TextView?

Trả lời

12

Bạn có thể sử dụng đoạn mã sau đây -

String str ="abc,cde,def,fgh"; 
String kept = str.substring(0, str.indexOf(",")); 
String remainder = str.substring(str.indexOf(",")+1, str.length);    
+0

Tôi đã thử mã này và làm việc cho tôi @Razib đúng s để strr. –

5
String splitted[] =s.split(",",2); // will be matched 1 times. 

splitted[0] //before the first comma. `abc` 
splitted[1] //the whole String after the first comma. `cde,def,fgh` 

Nếu bạn chỉ muốn cde làm chuỗi sau dấu phẩy đầu tiên. Sau đó, bạn có thể sử dụng

String splitted[] =s.split(",",3); // will be matched 2 times 

hoặc không có giới hạn

String splitted[] =s.split(","); 

Đừng quên kiểm tra length để tránh ArrayIndexOutOfBound.

+1

tách ra [1] sẽ không trở lại chuỗi đầy đủ sau dấu phẩy đầu tiên – Arjit

+0

OP nói: '2) chuỗi sau dấu phẩy đầu tiên 'có nghĩa là gì? và nếu có đầu vào như 'abc, cde, def, fgh' sau đó tôi thấy' splitted [1] 'sẽ trả về' cde' phải không? @Arjit – Saif

+1

Không @saif bạn sai. _splitted [1] _ sẽ có cde và Op muốn có _cde, def, fgh_ Ngoài ra hy vọng bạn đọc câu hỏi này ** Tôi muốn chia nội dung chuỗi thành hai phần ** –

2
String s =" abc,cde,def,fgh"; 
System.out.println("subString1="+ s.substring(0, s.indexOf(","))); 
System.out.println("subString2="+ s.substring(s.indexOf(",") + 1, s.length())); 
2

dưới đây là những gì bạn đang tìm kiếm:

public String[] split(",", 2) 

này sẽ cung cấp 2 chuỗi mảng. Chia có two versions. gì bạn có thể thử là

String str = "abc,def,ghi,jkl"; 
String [] twoStringArray= str.split(",", 2); //the main line 
System.out.println("String befor comma = "+twoStringArray[0]);//abc 
System.out.println("String after comma = "+twoStringArray[1]);//def,ghi,jkl 
1
// Note the use of limit to prevent it from splitting into more than 2 parts 
String [] parts = s.split(",", 2); 

// ...setText(parts[0]); 
// ...setText(parts[1]); 

Để biết thêm thông tin, hãy tham khảo documentation này.

1

Sử dụng chia tay với regex:

String splitted[] = addressText.split(",",2); 
System.out.println(splitted[0]); 
System.out.println(splitted[1]); 
0

Từ jse1.4String-Hai split phương pháp mới. Phương thức subSequence đã được thêm vào, theo yêu cầu của giao diện CharSequence mà String hiện đang thực hiện. Ba phương thức bổ sung đã được thêm vào: matches, replaceAllreplaceFirst.

Sử dụng Java String.split(String regex, int limit) với Pattern.quote(String s)

Chuỗi "boo: và: foo", ví dụ, mang lại kết quả như sau với các thông số:

Regex  Limit   Result 
    :   2  { "boo", "and:foo" } 
    :   5  { "boo", "and", "foo" } 
    :  -2  { "boo", "and", "foo" } 
    o   5  { "b", "", ":and:f", "", "" } 
    o  -2  { "b", "", ":and:f", "", "" } 
    o   0  { "b", "", ":and:f" } 
String str = "abc?def,ghi?jkl,mno,pqr?stu,vwx?yz"; 
String quotedText = Pattern.quote("?"); 
// ? - \\? we have to escape sequence of some characters, to avoid use Pattern.quote("?"); 
String[] split = str.split(quotedText, 2); // ["abc", "def,ghi?jkl,mno,pqr?stu,vwx?yz"] 
for (String string : split) { 
    System.out.println(string); 
} 

Tôi có khuôn mặt cùng một vấn đề trong các tham số URL, Để resoleve nó tôi cần phải phân chia dựa trên ? đầu tiên Vì vậy, String remaing chứa các giá trị tham số và chúng cần phải được chia dựa trên &.

String paramUrl = "https://www.google.co.in/search?q=encode+url&oq=encode+url"; 

String subURL = URLEncoder.encode(paramUrl, "UTF-8"); 
String myMainUrl = "http://example.com/index.html?url=" + subURL +"&name=chrome&version=56"; 

System.out.println("Main URL : "+ myMainUrl); 

String decodeMainURL = URLDecoder.decode(myMainUrl, "UTF-8"); 
System.out.println("Main URL : "+ decodeMainURL); 

String[] split = decodeMainURL.split(Pattern.quote("?"), 2); 

String[] Parameters = split[1].split("&"); 
for (String param : Parameters) { 
    System.out.println(param); 
} 

Run Javascript on the JVM with Rhino/Nashorn «Với String.prototype.split hàm JavaScript của:

var str = "abc?def,ghi?jkl,mno,pqr?stu,vwx?yz"; 
var parts = str.split(','); 
console.log(parts); // (5) ["abc?def", "ghi?jkl", "mno", "pqr?stu", "vwx?yz"] 
console.log(str.split('?')); // (5) ["abc", "def,ghi", "jkl,mno,pqr", "stu,vwx", "yz"] 

var twoparts = str.split(/,(.+)/); 
console.log(parts); // (3) ["abc?def", "ghi?jkl,mno,pqr?stu,vwx?yz", ""] 
console.log(str.split(/\?(.+)/)); // (3) ["abc", "def,ghi?jkl,mno,pqr?stu,vwx?yz", ""] 
0

: Trong trường hợp này bạn có thể sử dụng replaceAll với một số regex để có được đầu vào này để bạn có thể sử dụng:

System.out.println("test another :::"+test.replaceAll("(\\.*?),.*", "$1")); 

Nếu khóa chỉ là một Chuỗi bạn có thể sử dụng (\\D?),.*

System.out.println("test ::::"+test.replaceAll("(\\D?),.*", "$1")); 
Các vấn đề liên quan