文字列の逆を与えるメソッドを作成したいと思います。メソッドに NSString "Welcome to Objective C" を渡し、そのメソッドが "C evitcejbO ot emocleW" ではなく "C Objective to Welcome" のような文字列の逆を返すとします。 componentsSeparatedByString メソッドの。Objective c..で行うことは可能ですか? 助けてください。
質問する
6468 次
6 に答える
6
単語ごとに文字列を列挙できます。
NSString *string = @"Welcome to Objective-C!";
NSMutableArray *words = [NSMutableArray array];
[string enumerateLinguisticTagsInRange:NSMakeRange(0, [string length])
scheme:NSLinguisticTagSchemeTokenType
options:0
orthography:nil
usingBlock:^(NSString *tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop) {
[array addObject:[string substringWithRange:tokenRange]];
}];
NSMutableString *reverseString = [[NSMutableString alloc] init];
for (NSString *word in [words reverseObjectEnumerator]){
[reverse appendString:word];
}
NSLog(@"%@", reverseString);
これは印刷されます...
"!C-Objective to Welcome"
オプションを変更して、空白などを省略することができます...
于 2013-05-09T10:36:34.037 に答える
2
iOSで文字列を逆にするために以下の方法を使用しました
- (NSString *)reverseString:(NSString *)stringToReverse
{
NSMutableString *reversedString = [NSMutableString stringWithCapacity:[stringToReverse length]];
[stringToReverse enumerateSubstringsInRange:NSMakeRange(0, [stringToReverse length])
options:(NSStringEnumerationReverse | NSStringEnumerationByComposedCharacterSequences)
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
[reversedString appendString:substring];
}];
return reversedString;
}
于 2015-03-17T10:48:55.043 に答える
1
申し訳ありませんが、以前の質問を読み違えました。私は一連のループを使用してそれを行いました.私の答えはフォグマイスターよりも厄介ですが、それができるかどうかを試してみたかった.
NSString *str = @"This is a test";
NSMutableArray *array = [[NSMutableArray alloc] init];
for(int i = 0; i < [str length]; i++)
{
char sTest = [str characterAtIndex:i];
if(sTest == ' ')
{
[array addObject:[NSNumber numberWithInt:i]];
}
}
NSInteger iNext = [[array objectAtIndex:[array count]-1] integerValue];
iNext+=1;
if(iNext < [str length])
{
[array addObject:[NSNumber numberWithInt:iNext]];
}
NSMutableArray *wordArray = [[NSMutableArray alloc] init];
for(int i = 0; i < [array count]; i++)
{
if (i == 0)
{
int num = [[array objectAtIndex:i] integerValue];
NSString *s = [[str substringFromIndex:0] substringToIndex:num];
[wordArray addObject:s];
}
else if(i == [array count]-1)
{
int prev = [[array objectAtIndex:i-1] integerValue]+1;
int num = [str length];
NSString *s = [[str substringToIndex:num] substringFromIndex:prev];
[wordArray addObject:s];
}
else
{
int prev = [[array objectAtIndex:i-1] integerValue]+1;
int num = [[array objectAtIndex:i] integerValue];
NSString *s = [[str substringToIndex:num] substringFromIndex:prev];
[wordArray addObject:s];
}
}
NSMutableArray *reverseArray = [[NSMutableArray alloc]init];
for(int i = [wordArray count]-1; i >= 0; i--)
{
[reverseArray addObject:[wordArray objectAtIndex:i]];
}
NSLog(@"%@", reverseArray);
于 2013-05-09T11:07:22.470 に答える
0
それがあなたが求めているものである場合、それを行うためのAPIはありません。
空白 (または句読点、必要に応じて異なります) を探して文字列をいつでも反復処理し、単語を識別して、「反転した」メッセージを手動で再構成できます。
于 2013-05-09T10:28:23.550 に答える