首页 > 解决方案 > Groovy String Tokenizer 匹配错误的分隔符

问题描述

我有一个字符串,它的值类似于“inactiveCatalog%2CwrongTransaction”,我想把它放到一个打破“%2C”的列表中......

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

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

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

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

标签: javaregexgroovytokenize

解决方案


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

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

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

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

请参阅在线 Groovy 演示


推荐阅读