REMARQUE: Le comportement est modifié dans Xcode 6. L' \123 syntaxe a été remplacé par $123. Aussi être avertis que les retours à la ligne peuvent maintenant être mis en correspondance des reg exps alors assurez-vous de lire avant de Remplacer-Alling
Ajout d'un argument à une méthode:
Pour remplacer
[* setFoo:*]
avec
[* setFoo:* bar:value]
vous n'
(setFoo:)(.*)(\])
\1\2 bar:value]
(recherche de chaîne et de la chaîne de remplacement, respectivement).
ou, si Xcode 6
(setFoo:)(.*)(\])
$1$2 bar:value]
(ci-dessous utilise une nouvelle syntaxe; swap si sur Xcode 5 ou plus)
Toujours fait à la main, mais dans ce cas, j'ai été l'ajout d'une OPTION 'animer:' le drapeau, et la valeur par défaut jusqu'à ce point avait été OUI, mais je ne voulais PAS, de sorte que chaque appel devait être mis à jour.
D'autres exemples:
Des méthodes obsolètes (iOS)
dismissModalViewControllerAnimated:...
autodérision
Pour résoudre le obsolète dismissModalViewController
de le remplacer par un vide d'achèvement bloc de soutènement et d'animation de la valeur:
(dismissModalViewControllerAnimated:)(.*)(\])
dismissViewControllerAnimated:$2 completion:nil]
presentModalViewController:animated:
autodérision
(presentModalViewController:)(.*)( animated:)(.*)(\])
presentViewController:$2$3$4 completion:nil]
Divers
PD...Libération → PD Détruire...
J'ai récemment écrit une bibliothèque en c avec un tas de fichiers avec le préfixe PD
et j'ai utilisé de Créer/Release que malloc/free mots clés, j'ai regretté que cela peut faire réfléchir les gens de conserver le comptage est fait, donc j'ai voulu renommerPD<anything>Release(
avec PD<anything>Destroy(
.
([\n\r ])(PD)(.*)Release\(
$1$2$3Destroy(
Depuis Graphiques de Base a CGPDFDocumentRelease
et similaires, j'ai eu à assurer le mot a commencé avec la maladie de parkinson ainsi.
PDAssert(
PDScannerPop...(...)
)
;
J'avais bêtement mis affirmations autour du code fonctionnel qui allait devenir vide quand !#ifdef DEBUG. Heureusement, je savais que toutes ces a commencé avec PDAssert(PDScannerPop.... et s'est terminée avec );.
(PDAssert\()(PDScannerPop)(.*)(\);)
$2$3;
Pas de $1 ici parce que ce serait inclure l' PDAssert(
de nouveau. Notez que j'ai partagé à droite après le PDAssert( et quitte l' ) dans ); dans le 3ème morceau qui supprime l'excédent des parens de la suppression de PDAssert(.
Traiter avec des parenthèses
Vous pouvez correspondre avec tout sauf ")" pour faire face à la sur-gourmand regexp remplace. Exemple:
foo(replace(arg), bar)
foo(newvalue(newarg), bar)
À l'aide de replace\((.*)\)
saisira replace(arg), bar)
et le résultat sera foo(newvalue(newarg)
! Au lieu d'utiliser replace\(([^\)]*)\)
qui saisira replace(arg)
et laissez , bar)
seulement.
La conversion d'un tas de NSString propriétés de l'utilisation de conserver et/ou forte (et tout le reste) à l'aide de la copie
@property \(([^\)]*)[sr][te][rt][oa][ni][gn]([^\)]*)\)(.*)NSString(.*)
@property ($1copy$2)$3NSString$4
L'étrange sr te rt chose dans le centre correspond à la fois à "fort" et "conserver".