Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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 如果检测到分隔符,是否在行尾添加空格?_Java - Fatal编程技术网

Java 如果检测到分隔符,是否在行尾添加空格?

Java 如果检测到分隔符,是否在行尾添加空格?,java,Java,我创建了一个方法,允许我在文本文件中读取并将单个单词放入它们自己的元素中,这些元素由|分隔 例如: 0 | john | smith | potato | 上述情况将变成: 0 john smith potato 如果检测到一个|,我有没有办法在行尾添加一个空格()?我希望这样做,这样我就能做到: 0 john smith potato <-- empty spot goes here --> 0 厕所 史密斯 马铃薯 以下是我到目前为止的情况: public static

我创建了一个方法,允许我在文本文件中读取并将单个单词放入它们自己的元素中,这些元素由
|
分隔

例如:

0 | john | smith | potato |
上述情况将变成:

0
john
smith
potato
如果检测到一个
|
,我有没有办法在行尾添加一个空格(
)?我希望这样做,这样我就能做到:

0
john
smith
potato
<-- empty spot goes here -->
0
厕所
史密斯
马铃薯
以下是我到目前为止的情况:

public static String[] read() throws IOException {
    String str = null;
    List<String> list = new ArrayList<String>();
    BufferedReader in = new BufferedReader(new FileReader("test.txt"));
    while ((str = in.readLine()) != null) {
        for (String token : str.split("\\|")) {
            list.add(token);
        }
    }
}
公共静态字符串[]read()引发IOException{
字符串str=null;
列表=新的ArrayList();
BufferedReader in=新的BufferedReader(新文件读取器(“test.txt”);
而((str=in.readLine())!=null){
for(字符串标记:str.split(\\\\;)){
列表。添加(令牌);
}
}
}

字符串。拆分
是一种奇怪的习惯,它会修剪前导的空单元格,因此如果您有

potato||
结果将是

[potato]
但是你可以告诉我不要用
split(“\\\\”,-1)
来修剪它。这将导致

[potato,,] //3 cells
阅读文章了解更多信息。以下是
限制
说明:

limit参数控制应用阵列的次数,因此会影响结果阵列的长度。如果限制n大于零,则模式将应用最多n-1次,数组的长度将不大于n,并且数组的最后一个条目将包含最后一个匹配分隔符之外的所有输入。如果n为非正,则图案将被应用尽可能多的次数,阵列可以有任何长度。如果n为零,则将尽可能多次应用模式,数组可以有任何长度,尾随的空字符串将被丢弃


<> P>不幸的是,如果最后一次发生之后没有任何内容,则<代码>分裂()/>代码>方法没有能力考虑另一个元素。试试这个

如果字符串以您的字符结尾,您可以手动添加另一个元素,例如:

for (String token : str.split("\\|")) {
    list.add(token);
}
if (str.endsWith("|") {
    list.add("");
}

尝试使用
split(“\\\\\”,-1)
,这将不会修剪最后一个单元格(在最后一个“\\”)@AxelH Ah之后)。成功了。谢谢你应该阅读问题下的其他答案或评论,它们证明你错了。
limit
参数会告诉你你错了。我强调了它的中间部分。所以试试这个
“a | b |”。拆分(“\\\\\”,-1)
for (String token : str.split("\\|")) {
    list.add(token);
}
if (str.endsWith("|") {
    list.add("");
}