我有一個NSString
像@"12345"
和另一個像@"##-##-#"
。將NSString
中的所有#
個字符逐個替換爲12-34-5
的最佳方法是什麼?將一個NSString中的字符替換爲另一個NSString中的字符
-2
A
回答
2
NSString *original = @"12345";
NSString *toRepl = @"##-##-#";
for (int i = 0; i < original.length; i++) {
unichar c = [original characterAtIndex:i];
for (int j = 0; j < toRepl.length; j++) {
if([toRepl characterAtIndex:j] == '#'){
toRepl = [toRepl stringByReplacingCharactersInRange:NSMakeRange(j, 1) withString:[NSString stringWithFormat:@"%c", c]];
break;
}
}
}
0
解決方案與單一循環:
NSString *pattern = @"##-##-#";
NSString *fillWith = @"12345";
NSMutableString *result = [pattern mutableCopy];
__block NSUInteger index = 0; // Position into fillWith
// Loop over all characters in pattern:
[pattern enumerateSubstringsInRange:NSMakeRange(0, [pattern length])
options:NSStringEnumerationByComposedCharacterSequences
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
if ([substring isEqualToString:@"#"]) {
if (index < [fillWith length]) {
// Replace # by the next character from fillWith:
[result replaceCharactersInRange:substringRange
withString:[fillWith substringWithRange:NSMakeRange(index, 1)]];
index++;
} else {
// Too many #'s in pattern:
*stop = YES;
}
}
}];
NSLog(@"%@", result);
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);
0
下面是我對這個單圈,沒有使用重型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
相關問題
- 1. 將字符替換爲NSString
- 2. 替換NSString中的字符
- 3. 替換NSString中的字符
- 4. NSPredicate測試NSString是否包含另一個NSString中的字符
- 5. 將nsstring中的多個字符替換爲其他多個字符
- 6. 多個字符串在一個NSString中
- 7. 在NSString的某個索引處替換一個字符
- 8. Objective-C NSString字符替換
- 9. 如何將字替換爲字符串中的另一個字?
- 10. 將字符替換爲字符串中的下一個字符。
- 11. NSString中的換碼字符
- 12. 在NSString中出現一個字符
- 13. 用另一個字符串替換字符串中的字符?
- 14. 替換python中的另一個字符
- 15. 在NSString中替換多組字符
- 16. 替換一個NSString的值
- 17. 如何將mongodb中的字符替換爲集合中的另一個字符?
- 18. 刪除NSString的最後一個字符
- 19. 替換NSString中的幾個不同的字符
- 20. 一些字符在的NSString
- 21. 如何將一個NSString數組轉換爲一個c數組的字符串?
- 22. 的NSString替換字符方法
- 23. 幫助將NSString的int轉換爲ASCII字符的NSString?
- 24. 檢查一個nsstring是否與另一個字符串匹配
- 25. 確定NSString的第一個字符是否是一個數字
- 26. 我如何將一個NSString子字符串轉換爲字符的第三個字符?
- 27. 用一個字符替換字符串中的整個字符
- 28. 用一個字符替換字符串中的多個字符
- 29. 用mysql中的另一個字符串替換字符串
- 30. 用postgresql中的另一個字符替換字符
@nhgrif通過迭代'NSString'用'substringWithRange:NSMakeRange(0 ,2)];'但它需要我知道不方便的字符的確切數量。 –
你看過NSString的文檔嗎? –
@HotLicks是的,先生,我錯過了什麼? –