我正在尝试编写一个程序,提示用户输入一个字符串的电话号码.输入可以包含字母,程序将字母(无论是大写还是小写)转换为数字,并使所有其他字符保持不变.这是我到目前为止所拥有的:
def getNumber(uppercaseLetter):
if uppercaseLetter == 'A':
number = 2
elif uppercaseLetter == 'B':
number = 2
elif uppercaseLetter == 'C':
number = 2
elif uppercaseLetter == 'D':
number = 3
elif uppercaseLetter == 'E':
number = 3
elif uppercaseLetter == 'F':
number = 3
elif uppercaseLetter == 'G':
number = 4
elif uppercaseLetter == 'H':
number = 4
elif uppercaseLetter == 'I':
number = 4
elif uppercaseLetter == 'J':
number = 5
elif uppercaseLetter == 'K':
number = 5 …Run Code Online (Sandbox Code Playgroud) 我试图找到两个电话号码是否相同(两个相同的电话号码可能不是相同的格式,因为+11234567890与1234567890和0011234567890相同)
我试过像这样的PhoneNumberUtils.Compare:
if(PhoneNumberUtils.compare("+11234567890", "34567890"))
{
Toast.makeText(getApplicationContext(), "Are same", Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)
但它对于"+11234567890","34567890"返回true,而它们不相同.
有没有更好的方法来做到这一点?
所以,我对电话号码格式化程序的实现非常糟糕。它应该将电话号码的实例值格式化并以 xxx.xxx.xxxx 的格式返回(现在它应该只是一个美国电话号码)
代码可以在这个要点上找到:https : //gist.github.com/trtmn/a5a51c3da55ae0b32ac8
phone = models.CharField(max_length=20, blank=True)
def formatphone(self): #Dear Future Self - I'm so very sorry.
formattedphone = ""
for x in self.phone:
if x == "1":
formattedphone = formattedphone + x
if x == "2":
formattedphone = formattedphone + x
if x == "3":
formattedphone = formattedphone + x
if x == "4":
formattedphone = formattedphone + x
if x == "5":
formattedphone = formattedphone + x
if x == "6":
formattedphone = formattedphone …Run Code Online (Sandbox Code Playgroud) 我允许用户仅使用手机号码注册,并且我想在不使用互联网的情况下验证应用程序中的号码,我想要做的是获取用户选择的国家/地区的有效电话号码长度,并使用该国家/地区格式的长度和号码格式进行验证。
例如印度的电话号码长度为10,格式为0*********
请告诉我该怎么做。
我得到以下变量
$inputMobile = $_POST["inputMobile"];
Run Code Online (Sandbox Code Playgroud)
现在数字可以有多种方式,例如
07714....
+447714...
00447714...
Run Code Online (Sandbox Code Playgroud)
我需要做的是确保无论我得到什么数字,我都会将其更改为以+44开头.我有这样的事情
$inputMobile = $_POST["inputMobile"];
if (substr($inputMobile, 0, 1) === '+44') {
$inputMobile = $_POST["inputMobile"];
}
else {
$inputMobile = preg_replace('/^0?/', '+44', $inputMobile);
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果我给它一个像+447714的数字,它返回+ 44 + 44714.
我怎么能阻止这种情况发生?
谢谢
我有一个Python脚本,我们用它来解析用户输入的电话号码的CSV文件 - ergo,有很多奇怪的格式/错误.我们需要将这些数字解析为它们各自的组件,以及修复一些常见的条目错误.
我们的电话号码是悉尼或墨尔本(澳大利亚)或奥克兰(新西兰),以国际格式提供.
我们的标准悉尼号码如下:
+61(2)8328-1972
Run Code Online (Sandbox Code Playgroud)
我们有国际前缀+61,后面是括号中的单个数字区号2,后跟本地组件的两半,用连字符分隔8328-1972.
墨尔本数字在区号中只有3而不是2,例如
+61(3)8328-1972
Run Code Online (Sandbox Code Playgroud)
奥克兰的数字相似,但它们有一个7位数的本地组件(3个然后是4个数字),而不是正常的8位数.
+64(9)842-1000
Run Code Online (Sandbox Code Playgroud)
我们还针对一些常见错误进行了匹配.我已将正则表达式分离为自己的类.
class PhoneNumberFormats():
"""Provides compiled regex objects for different phone number formats. We put these in their own class for performance reasons - there's no point recompiling the same pattern for each Employee"""
standard_format = re.compile(r'^\+(?P<intl_prefix>\d{2})\((?P<area_code>\d)\)(?P<local_first_half>\d{3,4})-(?P<local_second_half>\d{4})')
extra_zero = re.compile(r'^\+(?P<intl_prefix>\d{2})\(0(?P<area_code>\d)\)(?P<local_first_half>\d{3,4})-(?P<local_second_half>\d{4})')
missing_hyphen = re.compile(r'^\+(?P<intl_prefix>\d{2})\(0(?P<area_code>\d)\)(?P<local_first_half>\d{3,4})(?P<local_second_half>\d{4})')
space_instead_of_hyphen = re.compile(r'^\+(?P<intl_prefix>\d{2})\((?P<area_code>\d)\)(?P<local_first_half>\d{3,4}) (?P<local_second_half>\d{4})')
Run Code Online (Sandbox Code Playgroud)
我们有一个用于standard_format数字,其他用于各种常见错误情况,例如在区号之前加一个零(02而不是2), or missing hyphens in the local component (e.g.83281972 instead of8328-1972`)等.
然后我们从级联if/elifs中调用这些: …
我知道如何在Android中获取所有联系人,以及如何获取他们的电话号码.
我似乎无法弄清楚如何通过电话号码联系...
这是我编写的当前代码,用于测试哪些电话号码可用:
// Create a cursor
Cursor cursor = Base.contentResover().query(Phone.CONTENT_URI, null, null,
null, null);
if (cursor.moveToNext()) {
Log.d("CALLOG", cursor.getString(cursor.getColumnIndexOrThrow(Phone.NUMBER)));
}
Run Code Online (Sandbox Code Playgroud)
问题是我只收到一些电话号码,而我希望得到所有...我做错了什么?
我有一个电话号码格式化为易于阅读的电话号码,即 (123) 123-4567
但是,当我想在代码中使用该电话号码时,我需要将该字符串解析为数字变量(例如int)
但是,[string intValue]; 不起作用 - 我intValue在以前的项目中使用了大约一百万次,都没有问题,但是在这里,我传入的每个字符串,我得到相同的,随机int退出:
- (int)processPhoneNumber:(NSString *)phoneNumber {
NSMutableString *strippedString = [NSMutableString stringWithCapacity:10];
for (int i=0; i<[phoneNumber length]; i++) {
if (isdigit([phoneNumber characterAtIndex:i])) {
[strippedString appendFormat:@"%c",[phoneNumber characterAtIndex:i]];
}
}
NSLog(@"clean string-- %@", strippedString);
int phoneNumberInt = [strippedString intValue];
NSLog(@"**** %d\n &i", phoneNumberInt, phoneNumberInt);
return phoneNumberInt;
}
Run Code Online (Sandbox Code Playgroud)
然后当我调用这个方法时:
NSLog(@"%i", [self processPhoneNumber:self.phoneNumberTextField.text]);
Run Code Online (Sandbox Code Playgroud)
我明白了:2147483647. 我给这个方法的每个输入都返回:2147483647
cocoa-touch objective-c type-conversion phone-number nsstring
鉴于电话号码都是这种格式:
(999) 999-9999 Ext.9999"
Run Code Online (Sandbox Code Playgroud)
我想把所有东西都归还给第二个空间,例如:
(999) 999-9999
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我的应用程序如何以编程方式获取设备的国家/地区代码?
当我收到传入的短信时,发件人号码始终包含国家/地区代码.但是,对于我的应用程序,我让用户手动输入他/她的电话号码,但我还需要知道国家/地区代码.
无论如何都要获取设备的国家代码和/或电话号码?
phone-number ×10
android ×3
python ×3
regex ×3
.net ×1
c# ×1
cocoa-touch ×1
cursor ×1
nsstring ×1
objective-c ×1
php ×1
preg-replace ×1
validation ×1