Ios 如何使被替换的NSString保留一些旧字符?

Ios 如何使被替换的NSString保留一些旧字符?,ios,objective-c,time,replace,nsstring,Ios,Objective C,Time,Replace,Nsstring,我的应用程序在“:”后面加一个空格,以防用户忘记。像这样: input = [input stringByReplacingOccurrencesOfString:@":" withString:@": "]; 如果他们用英语打字,效果会很好。它会把“我的朋友是:詹姆斯…”变成“我的朋友是:詹姆斯…”,这很好 但我的问题是,它也会在一段时间内发布广告。它将把“12:30”改为“12:30”。我可以制作一堆这些代码,其中包含所有可能需要修复的数字,这太多了 input = [input stri

我的应用程序在“:”后面加一个空格,以防用户忘记。像这样:

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替换保留以前的字符?比如说,我怎样才能让它保持原来的数字?我只想在一段时间内改变“:”to be“:”


我尝试过使用NSNotFound的“if”语句,但它不起作用。我希望如果它找到了“hh:mm”格式,就不要添加空格,如果没有,就添加空格,但这样做不起作用。

你可以这样做。。如果你有字符串形式的时间,或者只有没有数字的句子

NSCharacterSet *s = [NSCharacterSet characterSetWithCharactersInString:@"1234567890"];

NSRange r = [input rangeOfCharacterFromSet:s];

if (r.location != NSNotFound) 
{
input = [input stringByReplacingOccurrencesOfString:@":" withString:@": "];
}

希望它对您有所帮助。

上一个版本的内容是正确的,但您需要使用
NSRegularExpression
。以下内容可以帮您完成全部工作(在冒号后添加空格,但在两位数之间或后面已经有空格时除外):

NSString*input=@“我的朋友是:詹姆斯,约翰。现在是10:30。”;
NSMutableString*工作字符串=[输入mutableCopy];

NSRegularExpression*regex=[NSRegularExpression regular expressionwithpattern:@”()它可以工作,但我的应用程序与用户键入的内容有关。如果他们说“现在10:30”,它将无法工作。"我考虑的更多是使用两个NSString,一个带空格,一个不带空格。我尝试使用stringWithFormat,但不起作用。如果字符串是,现在是10:30。那么上面的内容也可以。不执行字符串替换操作。!A
NSRegularExpression
可能是一个解决方案。完全按照我的要求工作!还有,还有什么问题如果在“.”之后添加空格是合适的模式,但在涉及数字(如1.5.70094)时就不合适了?我只需要将“.0”替换为“.0”,但如果用户想用数字开始一个句子,这是一个问题。
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."