나는 PHP의 strtr과 비슷한 문자 치환을 수행하기 위해 노력하고있는 NSString 범주가 있습니다. 이 메서드는 문자열을 사용하고 fromString
에있는 각 문자의 모든 항목을 바꿔서 toString
의 문자로 바꾸고 동일한 인덱스를 사용합니다. 필자는 작동 방법이 있지만 성능이 좋지 않으며 메가 바이트 단위의 데이터를보다 신속하게 처리 할 수 있기를 원합니다. (선명도)Objective-C NSString 문자 대체
편집 :
stringByReplacingOccurrencesOfString:withString:options:range:
이 작동하지 않습니다. 나는 "ABC"와 같은 문자열을 가져야하고 "A"를 "B"로, "B"를 "A"로 "BAC"로 대체해야합니다. stringByReplacingOccurrencesOfString:withString:options:range:
의 연속 호출은 올바르지 않은 "AAC"와 같은 문자열을 만듭니다.
제안 사항은 좋지만 샘플 코드가 더 좋을 것입니다.
코드 :
- (NSString *)stringBySubstitutingCharactersFromString:(NSString *)fromString
toString:(NSString *)toString;
{
NSMutableString *substitutedString = [self mutableCopy];
NSString *aCharacterString;
NSUInteger characterIndex
, stringLength = substitutedString.length;
for (NSUInteger i = 0; i < stringLength; ++i) {
aCharacterString = [NSString stringWithFormat: @"%C", [substitutedString characterAtIndex:i]];
characterIndex = [fromString rangeOfString:aCharacterString].location;
if (characterIndex == NSNotFound) continue;
[substitutedString replaceCharactersInRange:NSMakeRange(i, 1)
withString:[NSString stringWithFormat:@"%C", [toString characterAtIndex:characterIndex]]];
}
return substitutedString;
}
는 또한이 코드는 텍스트 뷰의 텍스트에 대한 모든 변경 후에 실행됩니다. 매번 문자열 전체가 전달됩니다. 나는 그것을 할 수있는 더 좋은 방법이 있다는 것을 알고 있지만 어떻게 해야할지 모르겠습니다. 이것에 대한 어떤 제안이라도 대단히 감사 할 것입니다!
매우 유망 해 보인다. 문자 단위로 바꾸기 위해 조작 할 수 있는지 보겠습니다. – TheCrypticAce
문자별로 문자를 교체하지 않아도되도록 노력했습니다. 도움이된다면, 한 캐릭터는 여러 캐릭터가 아닌 오직 하나의 캐릭터로 대체됩니다. – TheCrypticAce
'fromString'을'firstString','toString'을'secondString'으로하고'modifiedString'을 돌려 줄 수 없습니까? 당신의 방법은 여전히 질문에서와 같이 보입니다. –