输入1:RC000030034
替换1:RC-000030034
输入2:RC100003282
替换2:RC1-00003282
希望在字符串的第一个 0 之前添加一个连字符。
输入总是有 11 个字符。
最终输出将始终为 12 个字符。
连字符后永远不会有字母字符。
输入1:RC000030034
替换1:RC-000030034
输入2:RC100003282
替换2:RC1-00003282
希望在字符串的第一个 0 之前添加一个连字符。
输入总是有 11 个字符。
最终输出将始终为 12 个字符。
连字符后永远不会有字母字符。
基于此:“希望在字符串的第一个 0 之前添加一个连字符。”
javascript中的示例:
> var re = /^([^0]*)0(.*)$/
> "RC000030034".replace(re,"$1-$2")
'RC-00030034'
在 bash (echo + sed) 中:
$ echo 'RC00030034' | sed -e 's/^\([^0]*\)0\(.*\)$/\1-\2/'
RC-0030034
output = input.replace("0", "-0")
或您的语言的等效代码
大多数语言都为字符串提供了某种替换方法。上面的示例在 javascript 中工作,它将第一次出现的 '0' 替换为 '-0'。在 python 中,有一个 replace() 替换所有匹配项;在那里,您必须使用可选参数来指示最大数量:
output = input.replace("0", "-0", 1)
在 perl 中,您可以使用正则表达式:
$input =~ s/0/-0/;
将所有字符串放在一个文件中(每个字符串在单独的行中),您可以使用以下 shell 命令:
perl -ne 's/0/-0/; print' inputfile
现在,假设您的输入允许像 RC0A00001234 这样的字符串,其中连字符应该在第二个 0 之前,在 A 之后(因为我们'在连字符之后永远不会有字母字符')。然后命令必须更改为:
perl -ne 's/(0\d*)$/-$1/; print' inputfile