【问题标题】:Remove zeros from country code of phone number in Objective-C在Objective-C中从电话号码的国家代码中删除零
【发布时间】:2012-11-22 11:08:12
【问题描述】:

我想从电话号码的国家/地区代码中删除前面的零。 我把它当作 NSString 因为电话号码包含诸如 + 、 ( 、 ) 、 - 之类的符号。 我需要那些符号。

例如

输入:-

1) NSString *phNo = @"0011234567890";
2) NSString *phNo2 = @"0601234567999";

输出:-

1) 11234567890
2) 601234567999

我做的如下

if ([phNo length]>10) {
        NSString *countryCodeSubString = [phNo substringToIndex:[phNo length]-10];
        if ([[countryCodeSubString substringToIndex:1]isEqualToString:@"0"]) {
            for (int i=0; i<[countryCodeSubString length]; i++) {
                NSString *str = [countryCodeSubString substringToIndex:i];
                if ([str isEqualToString:@"0"]) {
                    str = [str stringByReplacingOccurrencesOfString:@"0" withString:@""];
                }

            }
        }
    }

我知道上面的代码是错误的。 有人可以帮我吗?我怎样才能有效地做到这一点?

【问题讨论】:

  • 您可能想使用hasPrefix 方法。

标签: objective-c ios5 nsstring phone-number country-codes


【解决方案1】:
int firstNonZeroCharIndex = -1;
for (int i=0; i<phNo.length; ++i) {
    if ([phNo.characterAtIndex:i] != '0') {
        firstNonZeroCharIndex = i;
        break;
    }
}

if (firstNonZeroCharIndex != -1) {
    phNo = [phNo subStringFromIndex:firstNonZeroCharIndex];
}

【讨论】:

    【解决方案2】:

    如果你只是想去掉前面的零,那么你可以这样做。

    NSString *phNo = @"0011234567890";
    float number = [phNo floatValue];
    NSString *phNoWithOutZero = [NSString stringWithFormat:@"%1.0f", number];
    

    但是如果字符串有除数字以外的任何特殊字符,这将不起作用。

    【讨论】:

    • 您的解决方案也有效。但我在字符串中有符号。不管怎样,谢谢。我之前尝试过下面的代码,但它输出了 wearg 。你能告诉我它有什么问题吗?这是我的代码NSString *phNo = @"0011234567890"; NSLog(@"Ph No : %@",[NSString stringWithFormat:@"%d",[phNo intValue]]); 输出:- Ph 号:2147483647 为什么它不起作用?
    • Int 值限制为 8 个字节(–2147483648 到 2147483647)。因此,如果该数字大于 2147483647,则将其视为 2147483647。
    • 谢谢suresh...我只是错过了限制部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2017-11-22
    • 1970-01-01
    • 2013-05-24
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多