我正在使用 Eclipse for Java,并且我想分割输入行而不丢失任何字符。
例如,输入行是:
IPOD6 1 USD6IPHONE6 16G,64G,128G USD9,USD99,USD999MACAIR 2013-2014 USD123MACPRO 2013-2014,2014-2015 USD899,USD999
所需的输出是:
IPOD6 1 USD6
IPHONE6 16G,64G,128G USD9,USD99,USD999
MACAIR 2013-2014 USD123
MACPRO 2013-2014,2014-2015 USD899,USD999
我正在使用split("(?<=\\bUSD\\d{1,99}+)")
但它不起作用。
最佳答案
您只需在正向后查找内添加一个非单词边界 \B
即可。 \B
匹配两个非单词字符之间或两个单词字符之间。它不会在 USD9,
子字符串中的 USD9
和逗号之间存在的边界上进行拆分,因为 USD9
和 USD9
之间存在单词边界逗号,因为 9 是单词字符,而 ,
是非单词字符。它在 USD6
和 IPHONE6
之间存在的边界上进行分割,因为自 起这些子字符串之间存在非单词边界
是一个单词字符,\B
6I
也是一个单词字符。
String s = "IPOD6 1 USD6IPHONE6 16G,64G,128G USD9,USD99,USD999MACAIR 2013-2014 USD123MACPRO 2013-2014,2014-2015 USD899,USD999";
String[] parts = s.split("(?<=\\bUSD\\d{1,99}+\\B)");
for(String i: parts)
{
System.out.println(i);
}
输出:
IPOD6 1 USD6
IPHONE6 16G,64G,128G USD9,USD99,USD999
MACAIR 2013-2014 USD123
MACPRO 2013-2014,2014-2015 USD899,USD999
关于java - 如何拆分字符串而不丢失任何单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29381853/