2017-03-14 36 views
3

我有一個既有字母又有數字的字符串。只顯示文本中的數字

如下圖所示:

enter image description here

我想從字母分離號碼和當用戶點擊的數字 這些數字被顯示在屏幕的按鈕上。

如下面的照片:

enter image description here enter image description here

我有一個的活動,藉此到另一個字符串活動。

基本上我該怎麼辦?謝謝。

我的活動1:

public class BoxActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.box); 
    TextView textView = (TextView) findViewById(R.id.txtView); 
    Bundle bundle = getIntent().getExtras(); 
    if(bundle != null){ 
     String strBox = bundle.getString("fln"); 
     textView.setText(strBox); 
    } 

} 

我的活性2

public class SmsInbox extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener, AdapterView.OnItemClickListener { 

private static SmsInbox inst; 
ArrayList<String> smsMessagesList = new ArrayList<String>(); 
ListView smsListView; 
ArrayAdapter arrayAdapter; 

public static SmsInbox instance() { 
    return inst; 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    inst = this; 
} 

DrawerLayout drawer; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_sms_inbox); 
    smsListView = (ListView) findViewById(R.id.SmsList); 
    arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, smsMessagesList); 
    smsListView.setAdapter(arrayAdapter); 
    smsListView.setOnItemClickListener(this); 
    if(ContextCompat.checkSelfPermission(getBaseContext(), "android.permission.READ_SMS") == PackageManager.PERMISSION_GRANTED) { 
     ContentResolver cr = getContentResolver(); 
     Cursor cursor = cr.query(Uri.parse("content://sms/inbox"), null, null, 
       null, null); 

     int indexBody = cursor.getColumnIndex("body"); 
     int indexAddr = cursor.getColumnIndex("address"); 

     if (indexBody < 0 || !cursor.moveToFirst()) return; 
     arrayAdapter.clear(); 
     do { 
      String str = "?????? ??: " + cursor.getString(indexAddr) + 
        "\n" + cursor.getString(indexBody) + "\n"; 
      arrayAdapter.add(str); 
     } while (cursor.moveToNext()); 

    } 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 


    drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.addDrawerListener(toggle); 
    toggle.syncState(); 
    toggle.setDrawerIndicatorEnabled(false); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 


} 

public void updateList(final String smsMessage) { 
    arrayAdapter.insert(smsMessage, 0); 
    arrayAdapter.notifyDataSetChanged(); 
} 

@Override 
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) { 
    try { 
     String[] smsMessages = smsMessagesList.get(pos).split("\n"); 
     String address = smsMessages[0]; 
     String smsMessage = ""; 
     for (int i = 1; i < smsMessages.length; ++i) { 
      smsMessage += smsMessages[i]; 
     } 
     /* String smsMessageStr = address + "\n"; 
     smsMessageStr += smsMessage; 
     Toast.makeText(this, smsMessageStr, Toast.LENGTH_SHORT).show(); 
     */ 
     Intent intent = new Intent(this, BoxActivity.class); 
     String strBox = smsMessage; 
     intent.putExtra("fln", strBox); 
     startActivity(intent); 
     /*Pattern isnumbers = Pattern.compile("[0-9]+$"); 
     Matcher numberMatch = isnumbers.matcher(strBox); 

     if(numberMatch.matches()){ 
      Toast.makeText(this, "" + numberMatch, Toast.LENGTH_LONG).show(); 
     } */ 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 




@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.END)) { 
     drawer.closeDrawer(GravityCompat.END); 
    } else { 
     super.onBackPressed(); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.menuRight) { 
     if (drawer.isDrawerOpen(Gravity.RIGHT)) { 
      drawer.closeDrawer(Gravity.RIGHT); 
     } else { 
      drawer.openDrawer(Gravity.RIGHT); 
     } 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 


@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 

    int id = item.getItemId(); 

    if (id == R.id.Home_page) { 
     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 
     overridePendingTransition(R.anim.slide_in, R.anim.slide_out); 

    } else if (id == R.id.not_pay) { 

     if (SmsInbox.this.drawer != null && SmsInbox.this.drawer.isDrawerOpen(GravityCompat.END)) { 
      SmsInbox.this.drawer.closeDrawer(GravityCompat.END); 
     } else { 
      Intent intent = new Intent(this, MainActivity.class); 
      SmsInbox.this.startActivity(intent); 
      overridePendingTransition(R.anim.slide_in, R.anim.slide_out); 

     } 

    } else if (id == R.id.date_pay) { 
     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 
     overridePendingTransition(R.anim.slide_in, R.anim.slide_out); 

    } else if (id == R.id.bill_sms) { 
     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 
     overridePendingTransition(R.anim.slide_in, R.anim.slide_out); 

    } else if (id == R.id.help_menu) { 
     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 
     overridePendingTransition(R.anim.slide_in, R.anim.slide_out); 

    } else if (id == R.id.for_us) { 
     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 
     overridePendingTransition(R.anim.slide_in, R.anim.slide_out); 

    } else if (id == R.id.exit_app) { 
     finish(); 
     overridePendingTransition(0, 0); 
    } 


    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.END); 
    return true; 
} 


@Override 
protected void attachBaseContext(Context newBase) { 
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); 
} 
+1

看一看在該線程http://stackoverflow.com/questions/1558432/extracting-一個數字從一個字符串在Java和也是http://stackoverflow.com/questions/10734989/extract-numbers-from-an-alpha-numeric-string-using-android ... – chirag90

+1

達達, mikhay faghat shomararo neshoon bede?阿蘭奇奈舒恩? – nafas

+0

使用英語,所以每個人都可以讀它 –

回答

0

你應該使用正則表達式從字符串

Pattern p = Pattern.compile("-?\\d+"); 
Matcher m = p.matcher("There are more than -2 and less than 12 numbers here"); 
while (m.find()) { 
System.out.println(m.group()); 
} 

exgtract上視圖點擊收聽號碼,你可以做到這一點。

@Override 
void onClick(View view){ 
String allTxt = editText.getText.toString() 
Pattern p = Pattern.compile("-?\\d+"); 
    Matcher m = p.matcher(allTxt); 
    while (m.find()) { 
    System.out.println(m.group());//here are the numbers then you can set it to another TextView 
    } 
} 
0
String str = "test-asdfdfg 455 yuoyr 4";  
str = str.replaceAll("[^-?0-9]+", " "); 
System.out.println(Arrays.asList(str.trim().split(" "))); 

輸出[455,4]使用此陣列來顯示選擇器