Chinaunix

标题: 增加点人气:字符串一次替换2部分 [打印本页]

作者: legs    时间: 2019-08-27 16:37
标题: 增加点人气:字符串一次替换2部分
本帖最后由 legs 于 2019-08-27 16:40 编辑

字符如下:
  1. 1a1b2c2-3d3
复制代码
"-"之前的字符里的数字替换为8,"-"之后的所有数字替换为9,结果应如下:
  1. 8a8b8c8-9d9
复制代码


会几种其它方法,没想出来直接一句替换怎么做的(不使用分组法,假设不知道哪个位置是数字)。

作者: qwsxcd    时间: 2019-08-27 17:10

作者: orangetouch    时间: 2019-10-15 10:56
  1. perl -e '$s="1a2-3c22"; $a=0; $f=sub{if($_[0] eq "-"){$a=1; return "-";}elsif($a){return 9;}else{return 8;}}; $s=~s/(\d|\-)/$f->($1)/eg; print $s'
复制代码

作者: orangetouch    时间: 2019-10-15 10:56
  1. perl -e '$s="1a2-3c22"; $a=0; $f=sub{if($_[0] eq "-"){$a=1; return "-";}elsif($a){return 9;}else{return 8;}}; $s=~s/(\d|\-)/$f->($1)/eg; print $s'
复制代码

作者: legs    时间: 2019-10-16 10:53
回复 4# orangetouch

谢谢,这也是种思路,不过搞得复杂了,我还是直接两个替换简单点:s///g;s///g




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2