51 votes

Inverser le texte NSString

J'ai beaucoup cherché sur Google comment faire, mais comment inverser une NSString ? Ex : hi deviendrait : ih

Je cherche le moyen le plus simple de le faire.

Merci !

@Vince j'ai fait cette méthode :

- (IBAction)doneKeyboard {

// first retrieve the text of textField1
NSString *myString = field1.text;
NSMutableString *reversedString = [NSMutableString string];
NSUInteger charIndex = 0;
while(myString && charIndex < [myString length]) {
    NSRange subStrRange = NSMakeRange(charIndex, 1);
    [reversedString appendString:[myString substringWithRange:subStrRange]];
    charIndex++;
}
// reversedString is reversed, or empty if myString was nil
field2.text = reversedString;
}

J'ai relié cette méthode au didendonexit de textfield1. Lorsque je clique sur le bouton "done", le texte n'est pas inversé, l'UILabel affiche simplement le texte du UITextField que j'ai saisi. Quel est le problème ?

1voto

Bryan Luby Points 1186

Inverse la chaîne de caractères en utilisant la récursion :

@implementation NSString (Reversed)

+ (NSString *)reversedStringFromString:(NSString *)string
{
    NSUInteger count = [string length];

    if (count <= 1) { // Base Case
        return string;
    } else {
        NSString *lastLetter = [string substringWithRange:NSMakeRange(count - 1, 1)];
        NSString *butLastLetter = [string substringToIndex:count - 1];
        return [lastLetter stringByAppendingString:[self reversedStringFromString:butLastLetter]];
    }
}

@end

0voto

Voici une collection de catégories en Objective-C qui inverseront à la fois NSStrings et NSAttributedStrings (tout en préservant les attributs des caractères) : TextFlipKit

Par exemple :

NSString *example = @"Example Text";

NSString *reversed = example.tfk_reversed;

NSLog(@"Reversed: %@", reversed);

//prints 'Reversed: txeT elpmaxE'

0voto

developermike Points 405

Swift :

let string = "reverse"
let reversedStringCollection = string.characters.reversed()

for character in reversedStringCollection {
    reversedString.append(character)
    print(reversedString)
}

0voto

Pebby Points 169

Nous pouvons également réaliser la chaîne inverse comme suit.

NSString *originalString = @"Hello";
NSString *reverseString;
for (NSUInteger index = originalString.length; index > 0; index--) {
    char character = [originalString characterAtIndex:index];
    reverseString = [reverseString stringByAppendingString:[NSString stringWithFormat:@"%c", character]];
}

ou

NSString *originalString = @"Hello";
NSString *reverseString;
for (NSUInteger index = originalString.length; index > 0; index--) {
   char *character = [originalString characterAtIndex:index];
   reverseString = [reverseString stringByAppendingString:[NSString stringWithFormat:@"%s", character]];
}

0voto

Chris Gregg Points 1883

Google est votre ami :

-(NSString *) reverseString
{
  NSMutableString *reversedStr;
  int len = [self length];

  // Auto released string
  reversedStr = [NSMutableString stringWithCapacity:len];     

  // Probably woefully inefficient...
  while (len > 0)
    [reversedStr appendString:
         [NSString stringWithFormat:@"%C", [self characterAtIndex:--len]]];   

  return reversedStr;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X