字符串替换,一替换为1,二替换为2,……【已解决】
本帖最后由 j88iang 于 2010-9-5 12:22 编辑$jian = "一二三四五六七八九"
$jian = StringRegExpReplace($jian, "一", "1")
$jian = StringRegExpReplace($jian, "二", "2")
$jian = StringRegExpReplace($jian, "三", "3")
$jian = StringRegExpReplace($jian, "四", "4")
$jian = StringRegExpReplace($jian, "五", "5")
$jian = StringRegExpReplace($jian, "六", "6")
$jian = StringRegExpReplace($jian, "七", "7")
$jian = StringRegExpReplace($jian, "八", "8")
$jian = StringRegExpReplace($jian, "九", "9")有没有简洁的方法啊? 用for...next $jian = "一二三四五六七八九"
For $i=1 To StringLen($jian)
$jian=StringReplace($jian,StringMid($jian,$i,1),$i)
Next
MsgBox(0,0,$jian) 回复 3# 3mile
表面上看这个方法输出的结果是正确的,不过这是因为之前的字符串很有序。
也就是说 如果 $jian = "一一二三四五六七八九十"类似这样的话就不对了。 Local $a = [['零', 0],['一', 1],['二', 2],['三', 3],['四', 4],['五', 5],['六', 6],['七', 7],['八', 8],['九', 9]]
$jian = '一三八零二四五六七九'
$jian = '你是si三八吗?不,是三七'
For $i = 0 To UBound($a) - 1
$jian = StringReplace($jian, $a[$i], $a[$i])
Next
MsgBox(0, 0, $jian) 本帖最后由 水木子 于 2010-8-28 13:59 编辑
前辈的正则实在太强了,将数字提出来挨个替换!学习啦!{:face (411):} 回复 6# 水木子
貌似没轮到正则就收工了{:face (301):} 本帖最后由 水木子 于 2010-8-28 15:07 编辑
回复 7# afan
呵呵!理解错误,哎!主要是现在一看到前辈就想到了正则,似乎前辈已经成为了正则的代名词!{:face (317):}
$jian = "一二三四五六七八九零"
$jian2 = '你是si三八吗?不,是三七'
$jian3 = '一三八零二四五六七九'
$len = StringLen ($jian)
For $i=1 To $len
$a=$i
If $i=10 Then $a = 0
$jian2 = StringRegExpReplace ($jian2,StringMid ($jian,$i,1),$a)
$jian3 = StringRegExpReplace ($jian3,StringMid ($jian,$i,1),$a)
Next
MsgBox (0,'',$jian2&@CRLF&$jian3)
回复 5# afan
这个思想很好,不过可以再简单一点:
Global $num=["零","一","二","三","四","五","六","七","八","九"]
$jian = "一二三四五六七八九"
For $i=0 To 9
$jian=StringReplace($jian,$num[$i],$i)
Next 回复 8# 水木子
哈哈,水木兄看来也醉了 回复 10# foboy
果然简介,佩服。同时感谢楼上的各位。
页:
[1]