我有textView,用户可以在新行中添加文本。但是当用户输入多个新行并且没有输入任何文本时,我想跳过所有那一行,只使用一个新行。
我有如下的字符串。
Hello,
How r u?
我想要一个像这样的字符串
Hello
How r u?
我试过这个但没有工作
strContects=[strContects stringByReplacingOccurrencesOfString:@"\n\n" withString:@"\n"];
我该怎么做?
希望你明白吗?答案 0 :(得分:4)
您可以通过遵循正则表达式代码
来替换多次出现的多个换行符,并将其替换为单个换行符NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\n+" options:0 error:NULL];
NSString *newString = [regex stringByReplacingMatchesInString:myString options:0 range:NSMakeRange(0, [myString length]) withTemplate:@"\n"];
这将打印
您好,
你好吗? //在新行中(所有\ n省略单个\ n)
答案 1 :(得分:1)
如果此处的目标是删除所有空行 - 而不仅仅是合并多个换行符 - 那么值得注意的是接受的答案不会删除字符串中的初始空行;例如" \ n你好......"
更多涉及,但尝试此类别:
- (NSString*)stringByRemovingBlankLines
{
NSScanner *scan = [NSScanner scannerWithString:self];
NSMutableString *string = NSMutableString.new;
while (!scan.isAtEnd) {
[scan scanCharactersFromSet:NSCharacterSet.newlineCharacterSet intoString:NULL];
NSString *line = nil;
[scan scanUpToCharactersFromSet:NSCharacterSet.newlineCharacterSet intoString:&line];
if (line) [string appendFormat:@"%@\n",line];
}
if (string.length) [string deleteCharactersInRange:(NSRange){string.length-1,1}]; // drop last '\n'
return string;
}
(顺便说一句 - 这也可以处理其他类型的“换行符”字符,而接受的答案却没有。这个没有被要求,但是它出现在评论中)