java - 一个简单的 string.split() 出了可怕的错误

标签 java split

<分区>

这段代码似乎有问题,但我不知道为什么:

System.out.println(line);
// prints: Some Name;1|IN03PLF;IN02SDI;IN03MAP;IN02SDA;IN01ARC

String args[]            = line.split("|");
String candidatArgs[]    = args[0].split(";");
String inscrieriString[] = args[1].split(";");


System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(candidatArgs);
System.out.println("[0]:" + candidatArgs[0]);
System.out.println("[1]:" + candidatArgs[1]);

// prints: S
//         [Ljava.lang.String;@4f77e2b6
//         [0]:

我不知道为什么会这样。按照我的逻辑:

String args[]            = line.split("|");
[0]: Some Name;1
[1]: IN02SDI;IN03MAP;IN02SDA;IN01ARC

代替:

[0]: S

如果你想要更多的代码:即使它做的不多(尽可能多地删除了不必要的代码),它也应该可以编译

主要:

有一个文件: Candidati.txt

包含: Some Name;1|IN03PLF;IN02SDI;IN03MAP;IN02SDA;IN01ARC

import java.util.ArrayList;

Repository repository = new Repository ("Candidati.txt"); // file name

    ArrayList<Candidat> candidati = repository.getCandidati();
    System.out.println(candidati);

存储库

import java.util.ArrayList;

public class Repository {

    private String fisierCuCandidati;

    private ArrayList<Candidat> listaCandidati;

    public Repository (String fisierCuCandidati) {

        this.fisierCuCandidati = fisierCuCandidati; // file name

        this.listaCandidati = new ArrayList<Candidat>();

        this.incarcaCandidati();
    }


    public void incarcaCandidati() {
        FileReader in = null;
        BufferedReader input = null;

        //try {


            in = new FileReader (this.fisierCuCandidati);
            input = new BufferedReader (in);

            String line;
            while ((line = input.readLine()) != null) {

                System.out.println(line);

                String args[]            = line.split("|");
                String candidatArgs[]    = args[0].split(";");
                String inscrieriString[] = args[1].split(";");


                System.out.println(args[0]);
                System.out.println(args[1]);
                System.out.println(candidatArgs);
                System.out.println("[0]:" + candidatArgs[0]);
                System.out.println("[1]:" + candidatArgs[1]);
            }


}

候选人

public class Candidat {

    public Candidat (String nume) {

    }

    public Candidat (String nume, int id) {

    }

最佳答案

String.split 使用正则表达式,因此您需要转义管道 |,这是一个特殊字符(表示 OR):

String args[] = line.split("\\|");

还要打印 String 数组输出而不是 Object.toString 表示,您将需要:

System.out.println(Arrays.toString(candidatArgs));

关于java - 一个简单的 string.split() 出了可怕的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14854450/

相关文章:

java - GWT 2.6.1 错误 : Could not find or load main class com. google.gwt.dev.GWTShell

java - session 事务在哪里有用?

java - 如何使用 Micrometer 正确跟踪 Hibernate 指标?

r - 使用 dplyr group_by : return a list of data frames 模拟 split()

javascript - 如何在javascript中将文本分成几部分

elasticsearch - 在Kibana中将Filebeat消息字段拆分为多个字段

java - com.jaspersoft.jasperserver.api.metadata.jasperreports 在哪里?

java - 纹理未解除绑定(bind)

python - 如何将多行字符串拆分为多行?

javascript - 用这个字符: "\"分割