我有一个字符串
Product Description ID1 ID2 QTY Rate1 Rate2
我想把它打破
Product Description|ID1|ID2|QTY|Rate1|Rate2
我能看到的唯一常见分隔符是空格。但产品描述可以是任意数量的单词。所以我不知道它会有多少空间。但字符串其余部分的空格是固定的。
目前我将其拆分为数组,获取其长度并适当连接。有没有更直接的方法?
最佳答案
尚不完全清楚您所说的“更直接”是什么意思,但我假设您想避免连接步骤。
一种方法如下:
使用
Matcher.find(int)
进行初始传递以查找“N - 5th”分隔符的位置。 (这需要一个包含 5 个元素的int[]
,您可以将其用作使用find
确定的偏移量的队列。)使用
String.substring
提取分隔符前后的字符串使用
String.split
分割第二个子字符串以分隔最后5个字段。
如果保留偏移量和匹配长度(从步骤 #1 开始),您可以将步骤 #3 中的 split
调用替换为循环和 substring
调用。
(一般不能“向后”拆分的原因是正则表达式无法向后匹配。或者更准确地说,如果您这样做,您最终可能会与“向前”进行拆分时不同。这使得避免执行 2 次传递是很重要的。显然,在您的具体情况下,分隔符正则表达式将是“一个或多个空白”,这将在两个方向上工作......如果 Matcher API 中有能力做到这一点.).
关于java - 我们可以向后拆分 Java 字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26260136/