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")
在 %
、2
和 C
上拆分。
请注意,您不会得到空元素(在 %
和 2
和 C
之间),因为 tokenize()
会丢弃这些空字符串分隔符连续出现两次。
您需要 split()
将整个字符串作为分隔符:
ArrayList rseFiltersToRemoveList = rseFiltersToRemove.split('%2C');
// => [inactiveCatalog, wrongTransaction]
tokenize uses any of the delimiters, as per StringTokenizer.tokenize.
您可以简单地使用 split
并将您的字符串作为分隔符:
groovy:000> 'inactiveCatalog%2CwrongTransaction'.split("%2C")
===> [inactiveCatalog, wrongTransaction]
我有一个字符串,其值与此类似 "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")
在 %
、2
和 C
上拆分。
请注意,您不会得到空元素(在 %
和 2
和 C
之间),因为 tokenize()
会丢弃这些空字符串分隔符连续出现两次。
您需要 split()
将整个字符串作为分隔符:
ArrayList rseFiltersToRemoveList = rseFiltersToRemove.split('%2C');
// => [inactiveCatalog, wrongTransaction]
tokenize uses any of the delimiters, as per StringTokenizer.tokenize.
您可以简单地使用 split
并将您的字符串作为分隔符:
groovy:000> 'inactiveCatalog%2CwrongTransaction'.split("%2C")
===> [inactiveCatalog, wrongTransaction]