2014-09-02 34 views
1

我有一个像字符串高达第一个非空白字符在目标C

NSString * aString = @"\n \n \n This is my string "; 

我需要提取冷杉空格,换行字符高达第一个非空白非换行字符的字符串。即输出应该是

NSString *output = @"\n \n \n "; 

NSScanner尝试了如下 的NSString * ASTRING = @ “\ n \ n \ n这个是我的字符串”;

NSScanner *scanner = [NSScanner scannerWithString:aString]; 
NSCharacterSet *characterSet = [[NSCharacterSet whitespaceAndNewlineCharacterSet] invertedSet]; 
NSString *output = nil; 
[scanner scanUpToCharactersFromSet:characterSet intoString:&output]; 

但执行后输出字符串为零。这段代码有什么问题?

回答

2

您可以在该行(^)的开头使用正则表达式匹配所有空白字符(\ s *):

NSString *string = @"\n \n \n This is my string "; 
NSRegularExpression *expression = [[NSRegularExpression alloc] initWithPattern:@"^\\s*" options:0 error:NULL]; 
NSTextCheckingResult *match = [expression firstMatchInString:string options:0 range:NSMakeRange(0, string.length)]; 
NSString *output = [string substringWithRange:match.range]; 
+0

好吧..其完美的工作。谢谢你的答案。顺便问一下,你对我的NSScanner实现有什么问题有什么想法吗? – Johnykutty 2014-09-02 07:11:18

+0

另外我需要做什么来从纹章的末尾找到相同的东西? – Johnykutty 2014-09-02 07:13:37

+1

我试图用你的扫描仪做些什么,但我不知道那里有什么问题。你可以使用@“\\ s * $”来找到相同的结尾($表示结束) – ksysu 2014-09-02 07:36:43

相关问题