Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于正则表达式的StringUtils拆分_Java_Regex_Apache Stringutils - Fatal编程技术网

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。我不明白为什么他们没有用
模式
参数重载该函数。