【问题标题】:Complex string split method in javajava中复杂的字符串拆分方法
【发布时间】:2017-04-01 17:32:54
【问题描述】:

基本上,我试图能够读取由某些条件分隔的每一行(\n \s ,)并将字符串存储到节点 A 和节点 B 以添加节点,但不确定从哪里开始或想出了该怎么做。请帮忙!

public static void main(String[] args) {

    try{
        String oneLine;
        FileReader theFile = new FileReader("src/Test.txt");
        BufferedReader inFile = new BufferedReader(theFile);
        Node A = new Node(0,null);

        while((oneLine = inFile.readLine()) != null) {

            String numbers[]= oneLine.split("\n");

            for (int i=0;i<numbers.length;i++){
                 int a = Integer.parseInt(numbers[i]);
                 A.addNumtoNode(a); } } }

public void addNumtoNode(int e){
        head = new Node(e,head);
        if (size == 0)
        tail = head; 
        size++;
        }

Test.txt 示例

9
4

31,415,926,535
2

0
1,234,567,890

1,734,792
131

1,506,033,005,018,000,029
1,992

【问题讨论】:

  • Node 是您的自定义类吗?如果有,请发帖
  • 第三个非空行应该是一个数字(31415926535)还是四个数字?无论如何,我不知道你想做什么。您谈论添加到节点,但不告诉我们节点是什么。我们不知道您期待什么结果,也不知道为什么它不起作用。我不知道“由某些条件分隔”是什么意思,也不知道 \s 在您的问题中做了什么。而且我不知道您所说的“节点添加”是什么意思。基本上,你没有给我们任何东西。
  • 那是第 4 行,应该是 4 个数字。例如 31 -> 415 -> 926 -> 535 要添加到节点 2

标签: java split bufferedreader singly-linked-list


【解决方案1】:

String#split() 将正则表达式作为分隔符。

使用正则表达式\D+ 表示一个或多个非数字。

所以只需更改String numbers[]= oneLine.split("\n") 到:

 if (oneLine.isEmpty()) {
      continue;
 }
 String numbers[]= oneLine.split("\\D+");

【讨论】:

    【解决方案2】:

    我认为该节目应该使用“,”来分割线。 readLine() 将文本分成几行,然后你想要用','分隔的那一行的数字。

    【讨论】:

    • 如果我使用',',那么在读取第一行时它会给我错误..所以我需要确保应用一些条件,例如空格,输入或','
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多