在错误的分隔符上匹配的Groovy字符串标记器

时间:2018-10-29 19:19:38

标签: java regex groovy tokenize

我有一个字符串,其值类似于“ inactiveCatalog%2CwrongTransaction”,我想将其放入列表中,以“%2C”开头。...

String rseFiltersToRemove = "inactiveCatalog%2CwrongTransaction"
ArrayList rseFiltersToRemoveList = rseFiltersToRemove.tokenize("%2C")

我希望列表包含2个元素(“ inactiveCatalog”和“ wrongTransaction”),但事实证明它包含3个元素(“ inactive”,“ atalogItems”和“ wrongTransaction”)。

因此,它认为“ inactiveCatalog”中的“ C”是分隔符。

当我将分隔符设置为“%2C”时怎么可能?

2 个答案:

答案 0 :(得分:1)

tokenize()方法使用String的每个字符作为分隔符。因此,.tokenize("%2C")分裂为%2C

请注意,您不会得到空元素(在%2C之间),因为tokenize()在定界符时会丢弃这些空字符串连续出现两次。

您需要split(),它将整个字符串用作定界符:

ArrayList rseFiltersToRemoveList = rseFiltersToRemove.split('%2C');
// => [inactiveCatalog, wrongTransaction]

请参见online Groovy demo

答案 1 :(得分:1)

tokenize使用根据StringTokenizer.tokenize的任何分隔符。

您可以简单地将split与字符串用作分隔符:

groovy:000> 'inactiveCatalog%2CwrongTransaction'.split("%2C")
===> [inactiveCatalog, wrongTransaction]