Android拆分数据分为两部分

时间:2015-09-16 08:57:21

标签: java arrays string split spinner

我需要将数据分成两部分,例如我得到的是用户数据以及手机号码所以数据就像Arif || 44444~Balin || 33333~Cavin || 55555~Den || 66666~所以我可以将其拆分为

//Splitting the values
String[] parts = stat.split("~");
final String part1 = parts[0];
final String part2 = parts[1];

但是这将获得像Arif || 44444,Balin || 33333,Cavin || 55555,Den || 66666

的数据

我需要单独存储包括名称和语音的数据,我需要在微调器中显示名称,因此如果用户从微调器中选择名称,我需要获取其相应的手机号码。我做了选择名称的代码..但对于相应的号码,我没有得到,如果有人知道请帮助。

ref = String.valueOf(refdetails.getString("ref", "not found"));

List<String> spinnerArray =  new ArrayList<String>();
//spinnerArray.add(ref);
spinnerArray = Arrays.asList(ref.split("~"));

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
  this, android.R.layout.simple_spinner_item, spinnerArray);

// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);

3 个答案:

答案 0 :(得分:1)

类型1:使用正则表达式。

它分裂了非单词字符。

份[I] .split( “[\ W] {2}”)

    String stat = "Arif||44444~Balin||33333~Cavin||55555~Den||66666~";
    String[] parts = stat.split("~");
    List<String> names = new ArrayList<>();
    List<String> numbers = new ArrayList<>();

    for(int i = 0; i < parts.length; i++) {         
        names.add(parts[i].split("[\\W]{2}")[0]);          
        numbers.add(parts[i].split("[\\W]{2}")[1]);
    }

类型2:使用子字符串

    String stat = "Arif||44444~Balin||33333~Cavin||55555~Den||66666~";
    String[] parts = stat.split("~");
    List<String> names = new ArrayList<>();
    List<String> numbers = new ArrayList<>();

    for(int i = 0; i < parts.length; i++) {         
        int found = parts[i].indexOf("||");
        names.add(parts[i].substring(0,found));         

        numbers.add(parts[i].substring(found+2,parts[i].length()));

    }


 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()   {
   @Override
   public void onItemSelected(AdapterView<?> parent, View view, int posion, long id) {

     //here you can get the position (local argument position) of corresponding numbers to the names         

      String name = names.get(position); 
      String number = number.get(position);
   }
  @Override public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub
  } 
});

答案 1 :(得分:0)

String[] parts = stat.split("~");
final String part1 = parts[0];
final String part2 = parts[1];

这会将字符串拆分为数组{ "Arif||44444", "Balin||33333", "Cavin||55555", "Den||66666" }

要获取每个名称和数量,您可以进行更多拆分:

List<String> names = new ArrayList<>();
List<String> numbers = new ArrayList<>();

for(int i = 0; i < parts.length; i++) {
    names.append(parts[i].split("||")[0]);  
    numbers.append(parts[i].split("||")[1]);    
}

您现在将分别有2个列表,{ "Arif", "Balin", "Cavin", "Den" }{ "44444", "33333", "55555", "66666" }

答案 2 :(得分:0)

首先为微调器准备值并将所有数据添加到散列图

String[] parts = stat.split("~");
String[] sArray = new String[parts.length];
HashMap<String,String> sMap = new HashMap<String, String>();
int i=0;
for (String s : parts)
{
   sMap.put(s.split("|")[0],s.split("|")[1]);
   sArray[i] = s.split("|")[0];
   i++;
}

接下来设置微调器的,就像对代码一样。

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                this, android.R.layout.simple_spinner_item, sArray);

         // Specify the layout to use when the list of choices appears
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
         // Apply the adapter to the spinner
        spinner.setAdapter(adapter);

然后,如果你想获取微调器的值访问你的hashmap

String name = spinner.getSelectedItem().toString();
String id = sMap.get(name);