Android 将数据一分为二

Android Split data in two

我需要将数据分成两部分,例如我正在获取用户数据和手机号码,所以数据类似于 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 这样的数据

我需要分别存储包括姓名和电话号码在内的数据,并且我需要在微调器中显示姓名,因此如果用户select从微调器中获取姓名,我需要获取其对应的手机号码。我为 select 编写了名称代码..但是我没有得到相应的数字,如果有人知道请帮助。

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);
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" }

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

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);

然后,如果您想获取微调器的值,请访问您的哈希图

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

类型 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
  } 
});