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