Objective-C:我想删除所有跟踪和引导的零,但有一些例外。例如:
0.05000 -> 0.05
000.2300 -> 0.23
005.0 -> 5
500.0 -> 500
60.0000 -> 60
56.200000 -> 56.2
56.04000 -> 56.04
我尝试的是这样的[.0]+$|(^0+)
。但这对我想要达到的目标没有帮助。我正在使用带有RegularExpressionSearch的NSString,如下所示:
NSString *cleaned = [someString stringByReplacingOccurrencesOfString:@"[.0]+$|(^0+)"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, self.doseTextField.text.length)];
任何帮助都将不胜感激。
答案 0 :(得分:2)
有时最好将任务分解,按每次@""
的替换字符串顺序尝试这些:
@"^0+(?!\\.)"
- 0的初始序列不后跟一个点。这会将“003.0”修剪为“3.0”,将“000.3”修剪为“0.3”。
@"(?<!\\.)0+$"
- 尾部不的尾随序列,前面有一个点。所以“3.400”变为“3.4”而“3.000”变为“3.0”
@\\.0$
- 删除尾随的“.0”。前两个RE可能会故意为您提供“.0” ,以便您可以在此步骤中删除该点。
这不是解决它的唯一方法,但三个基本任务是删除前导零,删除尾随零和清理。你根本不需要使用RE,一个简单的有限状态机可能是一个很好的选择。
重要提示:以上假设字符串包含一个小数点,如果它可能不需要处理(左侧作为练习)。
HTH
答案 1 :(得分:-1)
这样的事情?
let numberStrings = [
"0.05000",
"000.2300",
"005.0",
"500.0",
"60.0000",
"56.200000",
"56.04000"
]
print(numberStrings.map({
String(Double($0)!).stringByReplacingOccurrencesOfString("\\.0*$", withString: "", options: .RegularExpressionSearch, range: nil)
}))