各位老师:好
在一个字符串中,需要在没有单位的数字后面加上"|"号,
如字符串:“味精3包魔鬼椒0.5生粉5公斤大香0.5公斤草果0.5红糖1干姜0.5公斤肉桂0.5公斤”中,需要在没有单位的数字后面加"|",
例如:魔鬼椒0.5后加"|",草果0.5后加"|",红糖1后加"|", 数字前面的物品很随机。
增加后变成:新字符串:“味精3包魔鬼椒0.5|生粉5公斤大香0.5公斤草果0.5|红糖1|干姜0.5公斤肉桂0.5公斤”
请各位老师及大咖们指教!
谢谢!
Dim pattern As String = "\d+[^.|包|公斤|斤]"
Dim txt = "味精3包魔鬼椒0.5生粉5公斤大香0.5公斤草果0.5红糖1干姜0.5公斤肉桂0.5公斤"
Dim str = System.Text.RegularExpressions.Regex.Replace(txt, pattern, New MatchEvaluator(Function(a As Match) As String
Return a.Value.Insert(a.Value.Length - 1, "|")
End Function))
Output.Show(str)
如果还有其它单位放到中括号里,比如
Dim pattern As String = "\d+[^.|包|公斤|斤|袋|箱|合]"
Output.Show(Regex.Replace("味精3包魔鬼椒0.5生粉5公斤大香0.5公斤草果0.5红糖1干姜0.5公斤肉桂0.5公斤", "(\d+)([^.|包|公斤|斤])", "$1" & "|" & "$2"))
蓝老师:好 出现异常:编辑错误,应为表达式
加:如果“味精30包魔鬼椒26生粉125公斤大香0.5公斤草果0.5红糖26干姜0.5公斤肉桂0.5公斤” 字符串中,味精增加成30包,或300包,按照三楼老师的代码,转换后:味精3|0包魔鬼椒26|生粉12|5公斤大香0.5公斤草果0.5|红糖26|干姜0.5公斤肉桂0.5公斤
我理想的状态:不管有单位的前面是小数、十位、百位,都不加"|",想要的结果:味精30包魔鬼椒26|生粉125公斤大香0.5公斤草果0.5|红糖26|干姜0.5公斤肉桂0.5公斤
请各位老师费心!
[此贴子已经被作者于2024/12/30 10:58:30编辑过]
2楼代码我测试没有问题。更新Foxtable到最新版试试
蓝老师:好
升级到新版本后,可以执行了!谢谢!
但如果“味精30包魔鬼椒26生粉125公斤大香0.5公斤草果0.5红糖26干姜0.5公斤肉桂0.5公斤” 字符串中,有单位的增加到十位、百位,如:味精增加成30包,或300包,转换后:味精3|0包魔鬼椒26|生粉12|5公斤大香0.5公斤草果0.5|红糖26|干姜0.5公斤肉桂0.5公斤
我理想的状态:不管有单位的前面是小数、十位、百位,都不加"|",想要的结果:味精30包魔鬼椒26|生粉125公斤大香0.5公斤草果0.5|红糖26|干姜0.5公斤肉桂0.5公斤
请各位老师费心!
谢谢