我的应用会在“:”之后放置一个空格,以防用户忘记。像这样:
input = [input stringByReplacingOccurrencesOfString:@":" withString:@": "];
如果用英文输入,效果很好。它将“我的朋友们:詹姆斯......”变成“我的朋友们:詹姆斯......”,这很好。
但我遇到的问题是它还会在一段时间内广告空间。将“12:30”改为“12:30”。我可以制作一堆这些代码,并提供所有可能的修复,这太过分了。
input = [input stringByReplacingOccurrencesOfString:@": 0" withString:@":0"];
更简单的方法是什么?我试过了:
input = [input stringByReplacingOccurrencesOfString:@"\\b\\d\\d?:\\s\\d\\d\\b" withString:@"\\b\\d\\d?:\\d\\d\\b" options: NSRegularExpressionSearch range:NSMakeRange(0, [input length])];
但所有这一切都是将所有时间从“hh:mm”更改为“bdd?:ddb”,就是这样。如何使NSString替换保留以前的字符?就像我怎样才能让它保持与之前相同的数字?我想要改变的只是“:”在一段时间内成为“:”。
我尝试过使用NSNotFound的“if”语句,但它没有用。我想要它,如果它找到一个“hh:mm”格式,不添加空格,但如果没有,添加空格但不起作用。
答案 0 :(得分:1)
你可以这样做..如果你有字符串的时间或只有没有数字的句子......
NSCharacterSet *s = [NSCharacterSet characterSetWithCharactersInString:@"1234567890"];
NSRange r = [input rangeOfCharacterFromSet:s];
if (r.location != NSNotFound)
{
input = [input stringByReplacingOccurrencesOfString:@":" withString:@": "];
}
希望它可以帮助你..
答案 1 :(得分:1)
您使用的是最后一个版本,但您需要使用NSRegularExpression
。以下内容应该为您完成整个过程(在冒号后添加空格,但不是夹在两位数之间或后面跟空格时):
NSString *input = @"My friends are:James, John. It's 10:30 right now.";
NSMutableString *workingString = [input mutableCopy];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(((?<!(\\b\\d\\d)):)|(:(?!(\\d\\d\\b))))(?!\\s)" options:0 error:nil];
[regex replaceMatchesInString:workingString options:0 range:NSMakeRange(0, [workingString length]) withTemplate:@": "];
input = [workingString copy];
NSLog(@"%@", input); // Prints "My friends are: James, John. It's 10:30 right now."