-2

私には のNSStringようなものが@"12345"あり、もう 1 つのようなものがあり@"##-##-#"ます。#すべての文字をNSString1 つずつ置き換える最善の方法は何12-34-5ですか?

4

4 に答える 4

0

これは、単一のループで、 Heavy を使用しない私の試みですcharacterAtIndex:

NSString *pattern = @"##-##-#";
NSString *replace = @"12345";
NSMutableString *result = [pattern mutableCopy];
NSRange searchRange = NSMakeRange(0, [pattern length]);
NSRange resultRange;

NSString *patternCheck = [pattern stringByReplacingOccurrencesOfString:@"-" withString:@""];

if ([replace length] == [patternCheck length]) {
    for (int i = 0; i < [replace length]; i++) {
        resultRange = [result rangeOfString:@"#" options:NSCaseInsensitiveSearch range:searchRange];
        [result replaceCharactersInRange:resultRange withString:[replace substringWithRange:NSMakeRange(i, 1)]];
    }
}
NSLog(@"pattern:%@ replace:%@ result:%@", pattern, replace, result);

印刷しますpattern:##-##-# replace:12345 result:12-34-5

于 2013-10-10T08:52:07.333 に答える
0

申し訳ありませんが、私はあなたの質問を読み違えました:

これが私がテストした実用的なソリューションです。

NSString *string = @"123456";

NSString *string2 = @"##-##-##";

int i = 0;
do {
    NSRange rangeOfChar = [string2 rangeOfString:@"-"];

    NSLog(@"range %ld %ld",rangeOfChar.location,rangeOfChar.length);

    string = [NSString stringWithFormat:@"%@%@%@",[string substringToIndex:rangeOfChar.location+i],@"-",[string substringFromIndex:rangeOfChar.location+i]];


    string2 = [string2 stringByReplacingCharactersInRange:rangeOfChar withString:@""];

    i++;

} while ([string2 rangeOfString:@"-"].location!=NSNotFound);
于 2013-10-09T18:03:19.003 に答える