java从字符串中删除HashMap键
我在数据库表列中有移动电话号码,格式为country_code
,后跟mobile_number
所以手机号码格式是这样的
+91123456789 // country code of India is +91 followed by mobile number
+97188888888 // Country code of UAE +971
我有一个HashMap包含5个国家的国家代码
map.put("+91","India")
map.put("+94","Sri Lanka")
map.put("+881","Bangladesh")
map.put("+971","UAE")
map.put("+977","Nepal")
我的Bean结构是这样的
class UserDetails {
// other fields
String countryCode;
String mobileNumber;
}
现在,我的任务是从数据库表列中获取移动电话号码,并将其分成两部分,然后设置countryCode
和mobileNumber
,但国家代码长度(在地图的键中)在3和4之间变化。这个检查可以通过使用subString()
和equals()
来完成,但我认为这不是正确的方法,那么解决这个问题的优雅(可能是在map key
)方法是什么呢
# 1 楼答案
虽然there is a library比seems to already do the trick好,但我想我会选择一个简单的自编解决方案:
输出:
请注意,当一个移动前缀是另一个前缀的子字符串时,这可能无法正常工作,但根据Wikipedia,国家呼叫代码是prefix codes,因此保证“系统中没有作为系统中任何其他码字前缀(初始段)的整个码字”
# 2 楼答案
我觉得一张地图更好。一个例子
# 3 楼答案
你可以用两张地图来显示不同长度的国家代码,然后先搜索3个字母的匹配项,然后再搜索4个字母的匹配项
输出: