2016-08-01 4 views
0

Ich habe eine Zeichenfolge wie @"Greetings from Capt. Ashim Mittra,​ Vice President – Flight Operations", aus dem ich "Capt. Ashim Mittra ". das heißt ich will von dem Wort „von“ und lesen „“ (Komma)Wie extrahiert man eine Teilzeichenfolge aus einer dynamischen Zeichenfolge in Ziel c?

+1

anzeigen Code, den Sie, dies zu tun versucht haben. –

+0

'substringWithRange' und' rangeOfString: 'können verwendet werden. Für die "fett" UI kommt es darauf an. Sie können 'NSAttributedString' verwenden, wenn ein fettgedruckter Text vorhanden ist oder nicht, oder verwenden Sie einfach die Eigenschaft' font' von 'UILabel' /' UITextView' ... – Larme

+0

Wie wäre es mit einem regulären Ausdruck? – Eiko

Antwort

0

Sie können wie etwas tun,

NSString *str = @"Greetings from Capt. Ashim Mittra,​ Vice President – Flight Operations"; 

NSRange range1 = [str rangeOfString:@"from"]; 
NSRange range2 = [str rangeOfString:@","]; 
NSRange rangeToSubString = NSMakeRange(range1.location + range1.length, range2.location - range1.location - range1.length); 

NSString *resultStr = [str substringWithRange:rangeToSubString]; 

NSLog(@"path1 : %@",resultStr); 

Sie zugeschrieben Text zu Ihrem Label festlegen können oder auch, wenn Sie Ihren Text mit fett Teil etwas zeigen wollen, wie,

UIFont *font = [UIFont boldSystemFontOfSize:17.0]; // whatever size, can use diiferent font with different method 

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:font,NSFontAttributeName, nil]; 

NSMutableAttributedString *resultStrWithBold = [[NSMutableAttributedString alloc]initWithString:str]; 

[resultStrWithBold setAttributes:dict range:rangeToSubString]; 

yourLabel.attributedText = resultStrWithBold; 
1

Verwenden Sie diesen Code starten:

NSString * yourStr = @"Greetings from Capt. Ashim Mittra,​ Vice President – Flight Operations"; 
NSRange range1 = [yourStr rangeOfString:@"from"]; 
NSRange range2 = [yourStr rangeOfString:@","]; 
NSRange rangeSubString = NSMakeRange(range1.location + range1.length, range2.location - range1.location - range1.length); 
NSString *finalString = [yourStr substringWithRange: rangeSubString]; 

Um es fett Verwendung dieses zu machen;

NSMutableAttributedString * yourAttributedString = [[NSMutableAttributedString alloc] initWithString: finalString]; 
[yourAttributedString addAttribute: NSFontAttributeName value:[UIFont boldSystemFontOfSize:12] range:NSMakeRange(0,finalString)]; 
[yourLbl setAttributedText: yourAttributedString]; 
+0

Nein Fehlerüberprüfung! – Droppy

2

Sie können reguläre Ausdrücke verwenden, um die Namen zu finden - hier ein Beispiel:

NSString *yourString = @"Greetings from Capt. Ashim Mittra,​ Vice President – Flight Operations"; 
    NSError *error = NULL; 

    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"from\\s+([^,]+)" 
                      options:NSRegularExpressionCaseInsensitive error:&error]; 

    [regex enumerateMatchesInString:yourString 
          options:0 
           range:NSMakeRange(0, [yourString length]) 
         usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){ 

          NSString *name = [yourString substringWithRange:[match rangeAtIndex:1]]; 
          NSLog(@"%@",name); 

         }]; 

Dies muss wahrscheinlich etwas verbessert werden, aber Sie müssen alle Eingabedaten überprüfen, um die richtigen Einstellungen vorzunehmen. Es wird mehrere Namen in der Eingabezeichenfolge finden, wie es steht.

-1

Sie können das folgende Stück Code verwenden:

- (void)viewDidLoad { 
[super viewDidLoad]; 
NSString *str = @"Greetings from Capt. Ashim Mittra ,​ Vice President – Flight Operations"; 
NSString *fromString = @"from"; 
NSString *toString = @","; 

NSArray *seperatorArr = [[NSArray alloc] initWithObjects:fromString, toString, nil]; 
NSString *reqStr = [self extractSubstringFrom:str seperatedBy:seperatorArr]; 
} 

- (NSString *)extractSubstringFrom:(NSString *)string seperatedBy:(NSArray *)seperatorArray { 

NSString *resultingString = string; 

for (int i = 0; i < seperatorArray.count; i++) { 
    NSArray *newStrArr = [resultingString componentsSeparatedByString:[seperatorArray objectAtIndex:i]]; 
    if (i == seperatorArray.count - 1) { 
     resultingString = [newStrArr firstObject]; 
    } 
    else 
     resultingString = [newStrArr lastObject]; 
} 
NSLog(@"Resulting String = %@",resultingString); 
return resultingString; 

}

Verwandte Themen