0

電話番号の国コードから先行するゼロを削除したいと考えています。電話番号には + 、 ( 、 ) 、 - などの記号が含まれているため、 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:@""];
                }

            }
        }
    }

上記のコードが間違っていることは知っています。誰でもこれで私を助けることができますか? どうすればこれを効率的に行うことができますか?

4

2 に答える 2

2
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];
}
于 2012-11-22T11:14:58.233 に答える
1

前のゼロを削除したいだけの場合は、このようにすることができます。

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

ただし、文字列に数字以外の特殊文字が含まれている場合、これは機能しません。

于 2012-11-22T11:15:42.253 に答える