gpt4 book ai didi

java - 通话记录中的号码列表存在逻辑问题

转载 作者:行者123 更新时间:2023-12-01 09:34:35 25 4
gpt4 key购买 nike

我的应用程序提供通话记录中的号码列表。

不幸的是,我遇到了一个小问题。我的应用程序单独列出了下面的数字(即使它们是相同的数字)。有没有一种方法可以在我的应用程序中将其分组为一个数字? 我想对所有国家/地区的号码应用一种方法。

示例:

754-3010(本地)

(541) 754-3010(国内)

+1-541-754-3010(国际)

1-541-754-3010(在美国调用)

001-541-754-3010(从德国调用)

我的应用程序中的代码:

Cursor managedCursor = managedQuery( CallLog.Calls.CONTENT_URI,null, null,null, null);

int number = managedCursor.getColumnIndex( CallLog.Calls.NUMBER );

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

while ( managedCursor.moveToNext() ) {
String phNumber = managedCursor.getString( number );
list.add(phNumber);
}

我在我的应用中显示了列表

最佳答案

我假设所有号码都属于美国

您需要在迭代时将列表中的所有数字转换为标准格式。

Set<String> numSet = new HashSet<String>();

while ( managedCursor.moveToNext() ) {
String phNumber = managedCursor.getString( number );

//Remove all non-numeric characters
phNumber = phNumber.replaceAll("[^\\d]", "");

//Remove all leading 0s
phNumber = phNumber.replaceFirst("^0+(?!$)", "");

//Remove "1" from the number if size is 11
phNumber = phNumber.length() == 11 ? phNumber.substring(1,phNumber.length());

//Format the number
phNumber = phNumber.replaceFirst("(\\d{3})(\\d{3})(\\d+)", "($1) $2-$3");

//Check if set already has the number, else put
if(numSet.get(phNumber) == null) numSet.put(phNumber);
}
<小时/>

如果您的号码不限于美国,您将需要编写逻辑来支持其他国家/地区。

引用this 具有类似要求的帖子。

关于java - 通话记录中的号码列表存在逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39110237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com