0

私の問題は非常に単純です。xcodeの文字列変数に次のような値を割り当てます。

ARAMAUBEBABRBGCNDKDEEEFOと私はこのようにそれが必要です:

AR、AM、AU、BE、BA、BR、BG、CN、DK、DE、EE、FO長さは変数ごとに異なります。

よろしくお願いします

4

4 に答える 4

4

この関数は、数千ごとにコマ収差が必要な数値に役立ちます...これが私が望んでいたことです。お役に立てば幸いです。

//add comas to a a string... 
//example1: @"5123" = @"5,123" 
//example2: @"123" = @"123" 
//example3: @"123123123" = @"123,123,123"
-(NSString*) addComasToStringEvery3chrsFromRightToLeft:(NSString*) myString{
    NSMutableString *stringFormatted = [NSMutableString stringWithFormat:@"%@",myString];
        for(NSInteger i=[stringFormatted length]-3;i>0;i=i-3) {
            if (i>0) {
                [stringFormatted insertString: @"," atIndex: i];
            }
        }
    return stringFormatted;
}
于 2013-07-17T17:45:29.230 に答える
1
NSString *yourString; // the string you want to process
int len = 2;  // the length
NSMutableString *str = [NSMutableString string];
int i = 0;
for (; i < [yourString length]; i+=len) {
    NSRange range = NSMakeRange(i, len);
    [str appendString:[yourString substringWithRange:range]];
    [str appendString:@","];
}
if (i < [str length]-1) {  // add remain part
    [str appendString:[yourString substringFromIndex:i]];
}
// str now is what your want
于 2012-09-01T06:12:12.177 に答える
1

これを試して:

int num;
NSMutableString *string1 = [NSMutableString stringWithString: @"1234567890"];   
num = [string1 length];
for(int i=3;i<=num+1;i++) {
  [string1 insertString: @"," atIndex: i];
  i+=3;
}
于 2012-09-01T06:15:22.033 に答える
0

これは、文字列がそれほど大きくない場合にうまく機能します。

NSString * StringByInsertingStringEveryNCharacters(NSString * const pString,
                                                   NSString * const pStringToInsert,
                                                   const size_t n) {
    NSMutableString * const s = pString.mutableCopy;
    for (NSUInteger pos = n, advance = n + pStringToInsert.length; pos < s.length; pos += advance) {
        [s insertString:pStringToInsert atIndex:pos];
    }
    return s.copy;
}

文字列が非常に大きい場合は、挿入せずに作成することをお勧めします(追加のみ)。

(独自のエラー検出を定義します)

于 2012-09-01T07:16:32.937 に答える