如何在不丢失任何单词的情况下拆分字符串?
How to split a string without losing any word?
我正在为 Java 使用 Eclipse,我想在不丢失任何字符的情况下拆分输入行。
例如输入行是:
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}+)")
但它不起作用。
不要让它太复杂,使用这个模式
(?=IPOD|IPHONE|MAC)
并替换为新行
现在很容易捕获或拆分成一个数组
Demo
或者这个模式
((USD\d+,?)+)
并替换为 \n
Demo
你只需要在正后视中添加一个非单词边界\B
。 \B
匹配两个非单词字符或两个单词字符。它不会在此 USD9,
子串中存在于 USD9
和逗号之间的边界上拆分,因为 USD9
和逗号之间存在单词边界,因为 9 是单词字符并且 ,
是一个非单词字符。它在 USD6
和 IPHONE6
之间存在的边界上拆分,因为这些子字符串之间存在非单词边界 \B
因为 6
是单词字符而 I
也是一个单词字符。
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 使用 Eclipse,我想在不丢失任何字符的情况下拆分输入行。
例如输入行是:
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}+)")
但它不起作用。
不要让它太复杂,使用这个模式
(?=IPOD|IPHONE|MAC)
并替换为新行
现在很容易捕获或拆分成一个数组
Demo
或者这个模式
((USD\d+,?)+)
并替换为 \n
Demo
你只需要在正后视中添加一个非单词边界\B
。 \B
匹配两个非单词字符或两个单词字符。它不会在此 USD9,
子串中存在于 USD9
和逗号之间的边界上拆分,因为 USD9
和逗号之间存在单词边界,因为 9 是单词字符并且 ,
是一个非单词字符。它在 USD6
和 IPHONE6
之间存在的边界上拆分,因为这些子字符串之间存在非单词边界 \B
因为 6
是单词字符而 I
也是一个单词字符。
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