Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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_Regex_Nsstring - Fatal编程技术网

Objective c 在十进制正则表达式前后修剪所有零

Objective c 在十进制正则表达式前后修剪所有零,objective-c,regex,nsstring,Objective C,Regex,Nsstring,目标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+)。但这无助于我想要实现的目标。我将NSString与RegularExpressionSearch一起使用,如下所示: NSString *cleane

目标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+)
。但这无助于我想要实现的目标。我将NSString与RegularExpressionSearch一起使用,如下所示:

 NSString *cleaned = [someString stringByReplacingOccurrencesOfString:@"[.0]+$|(^0+)"
                                                                           withString:@""
                                                                              options:NSRegularExpressionSearch
                                                                                range:NSMakeRange(0, self.doseTextField.text.length)];
任何帮助都将不胜感激。

像这样的事情

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)
}))

有时最好将任务分解,每次使用替换字符串
@“
按顺序尝试以下操作:

  • @“^0+(?!\\)”
    -0的初始序列后面没有点。这会将“003.0”修剪为“3.0”,将“000.3”修剪为“0.3”


  • @”(?关于
    500
    ?或
    -1000
    .50
    ?您是否只想说明任何可能的前导/尾随零?为什么要使用正则表达式?只需将字符串转换为数字并返回到字符串?或尝试替换为
    $1$2
    。或分组:您可能对
    NSNumberFormatter
    感兴趣,并避免使用正则表达式ex?@rmaddy我试着从字符串转换为数字,然后再转换回字符串。不起作用。将问题分解为可理解、可测试的部分的好建议-六个月后,我非常感激这种事情!因为这似乎是一种很好的做法,现在我将使用Wiktor对单行正则表达式的答案。即,或者尝试
    “^(0)+(?=\\)^0+(?=[1-9])\\.0+$(\\.\\d*?)0+$”
    替换为
    $1$2
    。或一个分组的:
    “^(?(0)+(?=\\)\124;(?=[1-9])(?:\.0+\\\\.\d*?)0$”