Java 基于正则表达式的StringUtils拆分
我有以下代码来拆分输入字符串:Java 基于正则表达式的StringUtils拆分,java,regex,apache-stringutils,Java,Regex,Apache Stringutils,我有以下代码来拆分输入字符串: import org.apache.commons.lang.StringUtils; public class SplitTest { public static void main(String args[]) { String input = "A||B||||D||E"; String result[] = StringUtils.split(input, "||"); for (int i =
import org.apache.commons.lang.StringUtils;
public class SplitTest {
public static void main(String args[]) {
String input = "A||B||||D||E";
String result[] = StringUtils.split(input, "||");
for (int i = 0; i < result.length; i++) {
System.out.println("result[" + i + "]:" + result[i]);
}
}
}
实际输出:
result[0]:A
result[1]:B
result[2]:
result[3]:D
result[4]:E
result[0]:A
result[1]:B
result[2]:D
result[3]:E
谁能告诉我为什么会这样?如何实现预期的输出?这是
StringUtils.split
的预期行为。此方法不会返回空结果
请参阅更多:
我的解决办法是:
public class SplitTest {
public static void main(String args[]) {
String input = "A||B||||D||E";
String result[] = input.split("[|]{2}");
for (int i = 0; i < result.length; i++) {
System.out.println("result[" + i + "]:" + result[i]);
}
}
}
公共类拆分测试{
公共静态void main(字符串参数[]){
字符串输入=“A | | B | | | | D | | E”;
字符串结果[]=input.split(“[|]{2}”);
for(int i=0;i
或:
这是
StringUtils.split的预期行为。此方法不会返回空结果
请参阅更多:
我的解决办法是:
public class SplitTest {
public static void main(String args[]) {
String input = "A||B||||D||E";
String result[] = input.split("[|]{2}");
for (int i = 0; i < result.length; i++) {
System.out.println("result[" + i + "]:" + result[i]);
}
}
}
公共类拆分测试{
公共静态void main(字符串参数[]){
字符串输入=“A | | B | | | | D | | E”;
字符串结果[]=input.split(“[|]{2}”);
for(int i=0;i
或:
文件中说,相邻的分离器被视为一个分离器
尝试改用StrTokenizer
String input = "A||B||||D||E";
StrTokenizer tokenizer = new StrTokenizer(input, "||");
tokenizer.setIgnoreEmptyTokens(false);
for (int i = 0; i < tokenizer .getTokenArray().length; i++) {
System.out.println("result[" + i + "]:" + tokenizer.getTokenArray()[i]);
}
String input=“A | | B | | | | | D | | E”;
StrTokenizer标记器=新的StrTokenizer(输入“| |”);
标记器.setIgnoreEmptyTokens(false);
for(int i=0;i
文档中说,相邻的分离器被视为一个分离器
尝试改用StrTokenizer
String input = "A||B||||D||E";
StrTokenizer tokenizer = new StrTokenizer(input, "||");
tokenizer.setIgnoreEmptyTokens(false);
for (int i = 0; i < tokenizer .getTokenArray().length; i++) {
System.out.println("result[" + i + "]:" + tokenizer.getTokenArray()[i]);
}
String input=“A | | B | | | | | D | | E”;
StrTokenizer标记器=新的StrTokenizer(输入“| |”);
标记器.setIgnoreEmptyTokens(false);
for(int i=0;i
您正在寻找的方法是:
您还可以使用标准Java和不使用库,使用String.split()
和正则表达式,获得相同的结果:
String result[] = input.split("\\|\\|");
您正在寻找的方法是:
您还可以使用标准Java和不使用库,使用String.split()
和正则表达式,获得相同的结果:
String result[] = input.split("\\|\\|");
input.split()
来自will give you want you need,我相信。input.split()
来自will give you want you need,我相信。谢谢,这正是我想要的。值得一提的是,String#split每次调用它时都必须编译正则表达式。我不明白为什么他们没有用模式
参数重载该函数。谢谢,这正是我想要的。值得一提的是,每次调用String#split时都必须编译regex。我不明白为什么他们没有用模式
参数重载该函数。