2017-01-11 1 views
0

ich unten als Stringwie in Zeichenfolge ersetzen regex

name : abc, 
position : 2 

Ich will haben, um so zu ersetzen, dass die Zeichenfolge wie unten

name : "abc", 
position : 2 

was Änderung ich will, ist zu tun, wird wird abc haben doppelte Anführungszeichen, so abc wird "abc".

Hinweis: abc ist dynamisch, es kann alles wie unten sein.

name : Test, 
position : 2 

name : Great, 
position : 2 

name : developers, 
position : 2 

Eine Idee, wie dies getan werden kann?

+0

Ihre Anforderungen sind nicht so klar. Überprüfen Sie [diese Demo] (https://ideone.com/jxfo3B) für Fall 1. Mit dem zweiten Fall, ist es nicht ein einfacher String-Ersatzkandidat? –

+0

erklären Sie ein bisschen 'Alles kann etwas sein?' – vaibhav

+0

okay, dann, was sind 'großartig, Test, Entwickler' hier müssen sie ein Objekt sein? – vaibhav

Antwort

2

Ich schlage vor, mit \\b(name\\s*:\\s*)(.+), Muster und ersetzen mit $1"$2",:

NSError *error = nil; 
NSString *myText = @"name : abc,\nposition : 2"; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\b(name\\s*:\\s*)(.+)," options:nil error:&error]; 
NSString *modifiedString = [regex stringByReplacingMatchesInString:myText options:0 range:NSMakeRange(0, [myText length]) withTemplate:@"$1\"$2\","]; 
NSLog(@"%@", modifiedString); 

Siehe Objective-C demo

Einzelheiten:

  • \\b - eine führende Wortgrenze
  • (name\\s*:\\s*) - Gruppe 1 name passend, 0+ Leerzeichen, : und 0+ Leerzeichen wieder
  • (.+) - alle 0+ Zeichen anders als Zeilenumbruch Zeichen so viele wie möglich
  • , - comma

Die Ersetzungsmuster - $1"$2", - fügt Inhalt der Gruppe 1, ", Inhalt der Gruppe 2 und ", ein.

Siehe die regex demo.

+0

Es funktioniert nicht für den Vornamen, wenn String ist \ '\ tThis ist test \ t \ tname: abc, \ nposition: 2 \ n \ nname: xyz, \ nposition: 3 \ n \ nname: jkl, \ nposition: 3'. Können Sie sich das bitte anschauen? –

+0

Ersetze '(? M) ^' mit '\\ b' –

+0

Perfekt ... Wird dich wissen lassen, ob es noch etwas gibt ... Danke eine Tonne !!! –