我从网站上提取一些文本并将其保存在NSString中,然后将其显示给用户,但我想要一个明确的行,一个单词接一个单词,绝对零换行或不必要的空格或标签。
拍摄以下图片:
身体里面有我不想要的所有间距。我确实想要单词之间的空格(所以我想要“这是一个句子”,而不是“Thisisasentence”)但所有这些间距实际上使得输出变得难看。我该如何摆脱它?
答案 0 :(得分:5)
正则表达式在这里有很多帮助:
NSString *tooManySpaces = @" Too\tmany spaces \n and on several \nlines, at that";
NSString *cleaned = [tooManySpaces stringByReplacingOccurrencesOfString: @"\\s+"
withString: @" "
options: NSRegularExpressionSearch
range: NSMakeRange(0, tooManySpaces.length)];
\s
模式覆盖空格,即空格,制表符和换行符。如果这太多了,您可以指定所需的内容,例如:[ \t]+
以涵盖空格和制表符。
为了在开头和结尾删除任何多余的空格,您还需要修剪字符串(在应用正则表达式替换之前或之后):
cleaned = [cleaned stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
答案 1 :(得分:0)
使用正则表达式将模式@" +"
(空格空间加)替换为@" "
(空格)。
换句话说,这将用一个空格替换所有出现的两个或多个空格。
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@" +" options:0 error:&error];
NSString *someString = ...; // some string with lots of spaces
NSString *newString = [regex stringByReplacingMatchesInString:someString options:0 range:NSMakeRange(0, someString.length) withTemplate:@" "];