2010-08-09 5 views
2

Existe-t-il une version c objective des délimiteurs de texte ??Délimiteurs de texte AppleScript dans l'objectif c

Voici le code AppleScript:

set oldDelim to AppleScript's text item delimiters 

set AppleScript's text item delimiters to "Jarvis>" 
set charliePlainOutput to (what ever needs to be parsed) 
set charlieUnmoddedOutput to last text item of charliePlainOutput 
set charlieOutputFiltered to text item 1 of charlieUnmoddedOutput 
set AppleScript's text item delimiters to "[Jarvis]" 
set charlieOutputLast to text item 1 of charlieOutputFiltered 
set AppleScript's text item delimiters to "[" 
set charlieOutput to text item 1 of charlieOutputLast 

set AppleScript's text item delimiters to oldDelim 

Toutes les idées?

+0

Quelle est l'entrée et la sortie prévues de votre exemple? Cela pourrait nous aider à trouver une solution pour vous. –

Répondre

2

La méthode NSString componentsSeparatedByString: fera essentiellement la même chose que text items dans Applescript. Vous pouvez appeler than, puis accéder aux objets du tableau pour obtenir les sous-chaînes. Cet exemple saisit tout le texte après la dernière occurrence de « Jarvis> » dans la chaîne d'origine:

NSString* originalString; //comes from somewhere 
NSArray* substrings = [originalString componentsSeparatedByString:@"Jarvis>"]; 
NSString* lastSubstring = [substrings lastObject]; 

Cependant, si vous voulez juste saisir une sous-chaîne de l'avant ou à l'arrière d'une chaîne existante, prendre Regardez rangeOfString:, substringToIndex: et substringFromIndex:. Vous devez d'abord utiliser rangeOfString: pour trouver la chaîne que vous souhaitez séparer, puis l'une des méthodes de sous-chaîne pour récupérer le texte que vous voulez. C'est un peu plus efficace que componentsSeparatedByString: si vous voulez seulement accéder à une seule sous-chaîne, plutôt qu'à chaque sous-chaîne séparée par votre délimiteur de texte. Cet exemple saisit tout le texte avant la première occurrence de « [Jarvis] » dans la chaîne d'origine:

NSRange jarvisRange = [originalString rangeOfString:@"[Jarvis]"]; 
NSString* substring = [originalString substringToIndex:jarvisRange.location]; 

Vous pouvez également utiliser rangeOfString:options: passant NSBackwardsSearch au paramètre options si vous souhaitez rechercher à partir de la fin de la chaîne plutôt que le front.

Questions connexes