我正在尝试使用多个分隔符逐行读取文件。我正在使用正则表达式进行拆分,但未将空格(“”)作为定界符。文件包含;,#,和空格作为分隔符。我究竟做错了什么?
文件行看起来像这样-ADD R1,R2,R3

public static void initialize() throws IOException {
    PC = 4000;
    BufferedReader fileReader = new BufferedReader(new FileReader("test/ascii.txt"));
    String str;
    while((str = fileReader.readLine()) != null){
        Instruction instruction = new Instruction();
        String[] parts = str.split("[ ,:;#]");
        instruction.instrAddr = String.valueOf(PC++);
        System.out.println(instruction.instrAddr);
        instruction.opcode = parts[0];
        System.out.println(instruction.opcode);
        instruction.dest = parts[1];
        System.out.println(instruction.dest);
        instruction.source_1 = parts[2];
        System.out.println(instruction.source_1);
        instruction.source_2 = parts[3];
        System.out.println(instruction.source_2);
    }
    fileReader.close();}


输出显示4000(PC值),ADD,R1,“”和R2。如何避免空间?正则表达式str.split(“ [,:;#]”);有什么问题吗? ?

最佳答案

您确定这些实际上是空格吗?

这应该适用于任何空格:

@Test
public void test() {
    String s = "1 2,3:4;5#6\t7";
    Assert.assertEquals(7, s.split("[\\s,:;#]").length);
}

09-16 15:01