Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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 通过delimeter进行拆分不';我不能给出正确的答案_Java - Fatal编程技术网

Java 通过delimeter进行拆分不';我不能给出正确的答案

Java 通过delimeter进行拆分不';我不能给出正确的答案,java,Java,我正在尝试用java中的.split()方法拆分字符串。当我尝试拆分下面的字符串时 2000##Test 它给了我一个数组,其中包含: 2000,,Test 但当我试图分裂这样的东西时 #### 它什么也没给我。我想要的是 ,,,, 编辑:我的delimeter是# 我怎样才能做到这一点 你好 我的java代码是: String splitString = "2000##1000####"; List<String> splitLi

我正在尝试用java中的.split()方法拆分字符串。当我尝试拆分下面的字符串时

     2000##Test
它给了我一个数组,其中包含:

     2000,,Test
但当我试图分裂这样的东西时

    ####
它什么也没给我。我想要的是

    ,,,,
编辑:我的delimeter是#

我怎样才能做到这一点

你好

我的java代码是:

  String splitString = "2000##1000####";
  List<String> splitList = new ArrayList<String>();
  String[] splitValues = text.split(splitString,"#");
  for ( int i = 0;i< splitValues.length;i++){
      splitList.add(splitValues[i]);
  }
String splitString=“2000##1000####”;
List splitList=new ArrayList();
String[]splitValues=text.split(splitString,“#”);
for(int i=0;i
这是一个已知且有文档记录的问题/行为

(我的重点)的JavaDocs:

此方法的工作方式类似于通过调用具有 给定的表达式和零的极限参数尾随空 因此,结果数组中不包括字符串。


现在最简单的方法和去分裂机制是使用谷歌番石榴的

产出:

[, , , , ]
此外,它还避免了在延迟拆分时创建包含所有结果的底层数组。除其他优点外,这对内存的要求较低

您的代码显示您希望从生成的数组中生成一个
列表
。这也是很容易实现的:

List<String> splitInput = Splitter.on('#').splitToList(input);
正如您所期望的那样,还输出
[,]

String string = "####";
String[] parts = string.split("#",-1);
System.out.println(Arrays.toString(parts));
给出
[,]

文档说明“因此,结果数组中不包括尾随的空字符串。”。
split()
方法采用所述的
limit
参数

limit参数控制填充图案的次数 应用,因此会影响结果数组的长度。如果n 如果为非正,则该模式将应用尽可能多的次数 可能,数组可以有任意长度。如果n为零,则 阵列可以有 任何长度和尾随的空字符串都将被丢弃

如果使用并传递负值,则不会从结果数组中删除尾随的空白项:

String[] splitValues = splitString.split("#", -1);


这将生成
{“2000”、“”、“1000”、“”、“”、“”、“”、“”}
数组。

只是其中的一个补充,我意识到这不是您要问的问题,但看起来您还想将拆分数组转换为列表,请执行此操作,而不是执行已有的for循环

String splitString = "####";
List<String> splitList = Arrays.asList(splitString.split("#",-1));
String splitString=“######”;
List splitList=Arrays.asList(splitString.split(“#“,-1));

请显示您的代码。text.split(splitString,“#”);那不可能是对的?可能是重复的,我可以用apache commons吗?是的。编辑成。无论如何,使用Splitter,您将得到一个
Iterable
/
列表
,其结果比数组更好,并且是您根据代码执行的操作。
String[] splitValues = splitString.split("#", -1);
String splitString = "####";
List<String> splitList = Arrays.asList(splitString.split("#",-1));