在NSString中完全停止或问号之前修剪空格

时间:2013-08-22 21:00:25

标签: ios objective-c nsstring

如果我有"How are you doing ?""I am fine ."

这样的字符串

我怎么才能得到 -

"How are you doing?""I am fine."

我想删除最后一个单词和“?”之间的空格或“。”

2 个答案:

答案 0 :(得分:5)

您可以使用stringByReplacingOccurrencesOfString。使用NSRegularExpressionSearch选项,您可以在一个语句中处理所有不同的排列:

NSString *result = [string stringByReplacingOccurrencesOfString:@"\\s+([.?])"
                                                     withString:@"$1"
                                                        options:NSRegularExpressionSearch
                                                          range:NSMakeRange(0, [string length])];

正则表达式可能含糊不清(有关详细信息,请参阅NSRegularExpression documentation),但这表示“找到包含一个或多个空格字符(空格,制表符,换行符等)的任何字符串,然后是完整的句点(期间)或问号,并替换为您找到的句号或问号。“您可以根据需要对其进行优化,但希望这说明了这一概念。

答案 1 :(得分:1)

我没有立即看到这样做的方法。我只想搜索你想要的任何字符的范围 - 比如你的问题标记和点 - 并检查它之前是否有空格,以防删除空格。这是一个例子:

NSString* str= @"How are you doing ?";
NSRange range= [str rangeOfCharacterFromSet: [NSCharacterSet characterSetWithCharactersInString: @".?"]];
if(range.location!= NSNotFound)
{
    if(range.location>0 && [str characterAtIndex: range.location-1]==' ')
    {
        str= [str stringByReplacingCharactersInRange: NSMakeRange(range.location-1, 1) withString: @""];
    }
}