以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  在数字后面加"|"号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=194620)

--  作者:cxmxjwlmq
--  发布时间:2024/12/29 13:20:00
--  在数字后面加"|"号
各位老师:好
   在一个字符串中,需要在没有单位的数字后面加上"|"号,
   如字符串:“味精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公斤”

请各位老师及大咖们指教!

谢谢!

--  作者:有点蓝
--  发布时间:2024/12/29 20:44:00
--  
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+[^.|包|公斤|斤|袋|箱|合]"

--  作者:y2287958
--  发布时间:2024/12/30 8:09:00
--  
Output.Show(Regex.Replace("味精3包魔鬼椒0.5生粉5公斤大香0.5公斤草果0.5红糖1干姜0.5公斤肉桂0.5公斤", "(\\d+)([^.|包|公斤|斤])", "$1" & "|" & "$2"))


--  作者:cxmxjwlmq
--  发布时间:2024/12/30 10:52:00
--  
蓝老师:好
   出现异常:编辑错误,应为表达式图片点击可在新窗口打开查看

加:如果“味精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编辑过]

--  作者:有点蓝
--  发布时间:2024/12/30 11:00:00
--  
2楼代码我测试没有问题。更新Foxtable到最新版试试
--  作者:cxmxjwlmq
--  发布时间:2024/12/30 13:31:00
--  
蓝老师:好
   升级到新版本后,可以执行了!谢谢!
  但如果“味精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 13:48:00
--  
Dim pattern As String = "\\d[^.|包|斤|公|\\d]"
--  作者:cxmxjwlmq
--  发布时间:2025/1/3 10:16:00
--  
谢谢!