Groovy 匹配错误定界符的字符串分词器

Groovy String Tokenizer matching on the wrong delimiter

我有一个字符串,其值与此类似 "inactiveCatalog%2CwrongTransaction",我想将其放入列表中,打破“%2C”......

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

我原以为列表有 2 个元素("inactiveCatalog" 和 "wrongTransaction"),但结果却有 3 个("inactive"、"atalogItems" 和 "wrongTransaction").

所以它认为"inactiveCatalog"中的"C"是一个分隔符。

当我将分隔符设置为“%2C”时,怎么会这样?

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

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

您需要 split() 将整个字符串作为分隔符:

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

参见online Groovy demo

tokenize uses any of the delimiters, as per StringTokenizer.tokenize.

您可以简单地使用 split 并将您的字符串作为分隔符:

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