我有这种格式的数据
"NEW ITEM:1_BELT:3_JEANS:1_BELT:1_SUIT 3 PCS:1_SHOES:1"
格式为
Item1:Item1Qty_Item2:Item2Qty.........ItemN:ItemNQty
我需要分开项目及其相应的数量和表格数组。我做了这样的项目部分。
var allItemsAry = Regex.Replace(myString, "[\\:]+\\d", "").Split('_');
现在
allItemsAry是正确的
[NEW ITEM, BELT, JEANS, BELT, SUIT 3 PCS, SHOES]
但是我无法弄清楚如何获取数量,无论我尝试从
3中获取
SUIT 3 PCS的哪种表达方式,诸如此类
var allQtyAry = Regex.Replace(dataForPackageConsume, "[^(\\:+\\d)]", "").split(':')
它以
:1:3:1:13:1:1出现(替换时)。因此,我不能用
:分隔以使其成为数组,可以看出第四项是
13,而应该是
1,即
3来自
SUIT 3 PCS。我还尝试了其他一些变体,但是
3中的
SUIT 3 PCS总是弹出。我如何获取衣服的数量(可能与
:相连,所以我可以以此拆分衣服并形成阵列?
更新:如果我在想得到
:和分号之前的数字之前没有弄清楚的话。
所以,我想要的是:1:3:1:1:1:1。
请您参考如下方法:
这将与一个替换工作:
var allQtyAry = Regex.Replace(dataForPackageConsume, @"[^_:]+:", "").split('_')
说明:
[^_:]表示匹配非
_或
:的任何内容
[^_:]+:表示匹配至少一个不与
_或
:匹配但以
:结尾的字符的任何序列
由于默认情况下正则表达式是贪婪的(即它们尽可能多地捕获),因此匹配将从字符串的开头或每个
_之后开始:
新商品:1_皮带:3_牛仔裤:1_皮带:1_SUIT 3件:1_鞋子:1
删除匹配的部分(上面的斜体粗体字)会导致:
1_3_1_1_1_1
按
_拆分将导致:
[1, 3, 1, 1, 1, 1]
