2011-11-17 28 views
8

Tôi có 5 hộp kiểm và tôi phải chọn nhiều hộp kiểm.Phụ thêm với StringBuilder

tôi đã thực hiện một mã như thế này để kiểm tra hộp kiểm được kiểm tra:

sports=(CheckBox)findViewById(R.id.sports_btn); 
sports.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     if (sports.isChecked() == true) 
     list.add("4"); 
    } 
}); 

Tôi thêm một giá trị vào một danh sách mảng:

list ArrayList<String> list = new ArrayList<String>(); 

và tôi lấy giá trị như chuỗi như này:

StringBuilder sb = new StringBuilder(); 
for(int i =0; i < list.size(); i++) 
{ 
    for (String str: list) 
    { 
     sb.append(str.toString()); 
     sb.append(","); 
    } 

} 
String sel_cat = sb; 

Tôi nhận được chuỗi nhưng nếu hai giá trị được chọn, nó sẽ đến như 2,3, Làm thế nào để loại bỏ dấu phẩy cuối cùng? Tôi không muốn dấu phẩy cuối cùng của chuỗi phải là 2,3.

+1

IMHO bạn luôn nên sử dụng mã đã được viết và kiểm tra sau đó lăn y của chúng tôi do đó khuyến nghị của tôi về việc sử dụng thư viện apache chuỗi utilource mã nguồn mở –

Trả lời

18
StringBuilder sb = new StringBuilder(); 
sb.deleteCharAt(sb.length()-1) 

Hoặc trong mã của bạn, sử dụng

StringBuilder sb = new StringBuilder(); 

for(int i =0;i<list.size();i++) 
{ 
    String prefix = ""; 
    for (String str : list) 
    { 
     sb.append(prefix); 
     prefix = ","; 
     sb.append(str); 
    } 
} 

String sel_cat = sb; 
+0

'StringBuilder' có một phương thức được gọi là' deleteCharAt' ... – MByD

+0

Hủy bỏ ofvote của tôi vì lý do mà tôi không hiểu tại sao 'str.toString()' được sử dụng trong 'append()' gọi. Đó không phải là một 'Chuỗi'? Ngoài ra, sẽ là dòng cuối cùng; 'Chuỗi sel_cat = sb;' biên dịch? –

5

Bạn có thể đặt điều kiện để kiểm tra:

for (String str : list) 
{ 
    sb.append(str.toString()); 
    if (i!=list.size()-1) 
    { 
    sb.append(","); 
    } 
} 
+0

Đó cũng là bước đầu tiên của tôi, nhưng nó đòi hỏi một điều kiện trong mỗi lần lặp lại. – MByD

1

Bạn có thể sử dụng deleteCharAt:

StringBuilder sb = new StringBuilder(); 
for(int i =0;i<list.size();i++) 
{ 
    for (String str : list) 
    { 
     sb.append(str); // str is already a String, no need for toString() 
     sb.append(","); 
    } 
} 
if (sb.length() > 0) { 
    sb.deleteCharAt(sb.length()-1); 
} 
String sel_cat=sb; 
0

Một Tùy chọn là nhìn vào StringUtils#join(Object\[\], String, int, int):

có một phương pháp có thể mất một mảng và đưa nó cùng với một delimeter tham gia ...

ví dụ:

StringUtils.join([null, "", "a"], ',') // creates... ",,a" 
3

Bạn có thể đặt mảng chuỗi của bạn trong điều kiện:

String list[]=new String[]{"A","C","D","F"}; 

public String print(String arr[]){ 

    StringBuilder sb = new StringBuilder(); 
    String prefix = ""; 
    for (String str : arr) 
    { 
     sb.append(prefix); 
     prefix = ","; 
     sb.append(str); 
    } 

    System.out.println("WithCommas"+sb); 
    return sb; 
} 
-1
import android.app.DatePickerDialog; 
import android.app.TimePickerDialog; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.DatePicker; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.ScrollView; 
import android.widget.TimePicker; 
+0

Xin chào, chào mừng bạn đến với StackOverflow. Xin vui lòng không chỉ đổ mã như câu trả lời của bạn, giải thích những gì bạn đang làm để mọi người có thể hiểu làm thế nào để giải quyết vấn đề. Cảm ơn. – Cthulhu

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