0

過去数時間の NSSting 操作方法をグーグルで検索しています。ここでこのようなスタックオーバーフローで多くのことが見つかりました

私は文字列"1800 Ellis St, San Francisco, CA 94102, USA"を持っています。文字列には "," をいくつでも含めることができます。「、」の後に、最後から 3 番目 (サンフランシスコ) と最後 (米国) の部分文字列を取得する必要があります。

出力は「San Franncisco USA」になります。

これを行う方法は頭の中にありますが、実装に苦労しています。

文字列の最後の 3 つの「,」の位置を取得するために、このコードを試します。しかし、それは私にはうまくいきません

 NSInteger commaArr[3];

        int index=0;   
        int commaCount=0;

        for(unsigned int  i =  [strGetCityName length]; i > 0; i--)
        {
            if([strGetCityName characterAtIndex:i] == ',')
            {

                commaArr[index]=i;
                index++;
                ++commaCount;
                if(commaCount == 3)
                {
                    break;
                }
            }
        }

ありがとう

4

3 に答える 3

2

次のように実行できます。

NSString *s = @"1800 Ellis St, San Francisco, CA 94102, USA";
NSArray *parts = [s componentsSeparatedByString:@","];
NSUInteger len = [parts count];
NSString *res;
if (len >= 3) {
    res = [NSString stringWithFormat:@"%@%@", [parts objectAtIndex:len-3], [parts objectAtIndex:len-1]];
} else {
    res = @"ERROR: Not enough parts!";
}

componentsSeparatedByString:で文字列を分割し,stringWithFormat:パーツを元に戻します。

于 2012-08-29T13:54:22.753 に答える
1
NSString *s = @"1800 Ellis St, San Francisco, CA 94102, USA";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^(?:[^,]*,)?\\s*([^,]*),\\s*(?:[^,]*),\\s*([^,]*)$" options:0 error:NULL];
NSString *result = [regex stringByReplacingMatchesInString:s options:0 range:NSMakeRange(0, [s length]) withTemplate:@"'$1 $2'"];
于 2012-08-29T14:17:13.513 に答える
0

これを試して:

NSString *string = @"1800 Ellis St, San Francisco, CA 94102, USA";
NSArray *components = [string componentsSeparatedByString:@","];
NSString *sanFrancisco = [components objectAtIndex:components.count - 3];
NSString *usa = [components objectAtIndex:components.count - 1];
NSString *result = [sanFrancisco stringByAppendingString:usa];
于 2012-08-29T13:57:18.080 に答える