【问题标题】:Removing country code from phone number从电话号码中删除国家代码
【发布时间】:2016-07-17 15:26:37
【问题描述】:

我遇到了一个问题,其中一些联系人包含国家/地区代码,而另一些则没有。

我有用于获取保存在列表中的联系人号码的代码。该列表如下所示:

[9999999999, 91-8888888888, 91-0000000000, 1111111111]

现在,我想从拥有它的号码中删除国家代码。我想不出办法来检查这个。

这是我获取联系人的代码:

ContentResolver cr = getApplicationContext().getContentResolver(); //Activity/Application android.content.Context
    Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, "UPPER(" + ContactsContract.Contacts.DISPLAY_NAME + ") ASC");
    if(cursor.moveToFirst())
    {

        do
        {
            String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

            if(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
            {
                Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",new String[]{ id }, null);
                while (pCur.moveToNext())
                {
                    String contactName = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY));
                    String contactNumber = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                    allContacts.add(contactName);
                    contactNumber = contactNumber.replaceAll("\\s+","");
                    allnumbers.add(contactNumber);

                    break;
                }
                pCur.close();
            }

        } while (cursor.moveToNext()) ;

    }
}

这里,allnumbers 包含数字(其中有些带有国家代码,有些则没有)。如何从拥有国家代码的人那里删除国家代码?

任何帮助或搜索关键字将不胜感激,谢谢。

【问题讨论】:

  • 信息太少。你的代码呢?
  • 如果文件中有多个国家代码,则删除国家代码会使电话号码毫无意义。为没有国家代码的号码提供默认国家代码可能会更好。例如,在北美,假设 +1。
  • 国家代码有“+”号吗?
  • 您基本上是在问如何进行字符串操作吗?如果是这样,请阅读一些关于此的教程。这对 SO 来说是题外话。
  • 没有使用号码来匹配某些东西,而国家代码无法匹配,所以我需要删除国家代码。是的,它显示+登录日志

标签: java android country-codes


【解决方案1】:

如果您想删除第一次出现的包含 '91-' 的字符串,您可以简单地使用 replaceFirst() 方法。所以你的代码最终会是这样的:

contactNumber.replaceAll("\\s+","").replaceFirst("91-","");

如果你想检查一个字符串是否以'91-'开头,你可以使用这个:

if (contactNumber.startsWith("91-")) {

}

【讨论】:

  • 请编辑更多信息。不建议使用纯代码和“试试这个”的答案,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。
【解决方案2】:

在您的带有数字数组的示例中,国家代码之间有破折号(-)。所以你可以使用 indexOf 来确定号码是否有国家代码。你可以使用 regexp([\d]+-[\d]+) 来做同样的事情

您还可以计算位数。通常没有国家代码的数字只有 10 位数字。这取决于你的情况

【讨论】:

    【解决方案3】:

    试试看

    contactNumber = contactNumber.replace("+91", "");
    

    希望这会有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      相关资源
      最近更新 更多