Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何删除字符串中所有不必要的空格?_Objective C_Nsstring - Fatal编程技术网

Objective c 如何删除字符串中所有不必要的空格?

Objective c 如何删除字符串中所有不必要的空格?,objective-c,nsstring,Objective C,Nsstring,我从网站中提取一些文本并保存在NSString中,然后将其显示给用户,但我希望它以清晰的行显示,一个字接一个字,绝对没有换行符或不必要的空白或制表符 以下图为例: 身体里有我不想要的空间。我确实想要单词之间的空格(所以我想要的是“这是一个句子”,而不是“这是一个句子”),但所有这些空格确实让输出变得丑陋。如何消除它?使用正则表达式将模式@“+”(空格+空格)替换为@“(空格) 换句话说,这将用单个空间替换两个或多个空间的所有引用 NSRegularExpression *regex = [NS

我从网站中提取一些文本并保存在NSString中,然后将其显示给用户,但我希望它以清晰的行显示,一个字接一个字,绝对没有换行符或不必要的空白或制表符

以下图为例:


身体里有我不想要的空间。我确实想要单词之间的空格(所以我想要的是“这是一个句子”,而不是“这是一个句子”),但所有这些空格确实让输出变得丑陋。如何消除它?

使用正则表达式将模式
@“+”
(空格+空格)替换为
@“
(空格)

换句话说,这将用单个空间替换两个或多个空间的所有引用

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:@" "];

使用正则表达式将模式
@“+”
(空格+空格)替换为
@“
(空格)

换句话说,这将用单个空间替换两个或多个空间的所有引用

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:@" "];

正则表达式在这里帮助很大:

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]+
以覆盖空格和制表符

为了删除开头和结尾多余的空格,还需要修剪字符串(在应用正则表达式替换之前或之后):


正则表达式在这里帮助很大:

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]+
以覆盖空格和制表符

为了删除开头和结尾多余的空格,还需要修剪字符串(在应用正则表达式替换之前或之后):


这不会也删除单词之间的空格吗?@DougSmith不确定你的确切意思-它会将任何空格序列减少到一个空格-即,在所有已经有空格的单词之间留下一个空格。我就是这样读你的问题的。请注意,它将序列替换为一个空格字符串。我忘记了该方法。这比我的方法简单得多。虽然我的解决方案在需要处理多个字符串时效率更高。这不会同时删除单词之间的空格吗?@DougSmith不确定你的确切意思-它会将任何空格序列减少到一个空格-即,在所有已经有空格的单词之间留一个空格。我就是这样读你的问题的。请注意,它将序列替换为一个空格字符串。我忘记了该方法。这比我的方法简单得多。虽然我的解决方案在需要处理多个字符串时效率更高。我已经有了这样的解决方案:
NSRegularExpression*regex=[NSRegularExpression regular expression withpattern:@](.*?\\n | \\t |&.*?)”
,但它似乎无法捕捉到它们(它还删除了所有HTML格式)这是一个完全不同的问题。您的问题是关于删除额外的空格。现在您讨论的是其他一些正则表达式给您带来的问题。我已经有了以下内容:
NSRegularExpression*regex=[NSRegularExpression regular expression withpattern:@”(.?\\n|\\t|&.*)”
,但它似乎没有抓住它们。(它也会删除所有HTML格式。)这是一个完全不同的问题。您的问题是删除额外的空格。现在您将讨论一些其他正则表达式,这些正则表达式会给您带来问题。