useDelimiter,读取直到第一个分隔符,然后更改行

时间:2013-01-24 18:12:49

标签: java delimiter

我正在尝试使用Delimiter来取出31行文档中的第一个数字,看起来像“105878-798 ## 176000 ## JDOE”并将其放入int数组中。 我所介入的数字是“105878798”,并且数字的数量不一致。

我写了这个但是当我到达第一个分界符(行)时无法弄清楚如何更改行。

   import java.util.*;
   import java.io.*;

   public class Test {
   public static void main(String[] args) throws Exception {
            int n = 0;
            String rad;

            File fil = new File("accounts.txt");
                int[] accountNr = new int[31];
            Scanner sc = new Scanner(fil).useDelimiter("##");

                    while (sc.hasNextLine()) {
                    rad = sc.nextLine();
                    rad.replaceAll("-","");
                    accountNr[n] = Integer.parseInt(rad);
                    System.out.println(accountNr[n]);
                    n++;
                    System.out.println(rad);
                }
       }
   }

2 个答案:

答案 0 :(得分:1)

不要使用扫描程序,使用StringTokenizer并将分隔符设置为##,然后继续调用.nextElement(),无论多长时间,你都会得到下一个数字。

StringTokenizer st2 = new StringTokenizer(str, "##");

while (st2.hasMoreElements()) {
    log.info(st2.nextElement());
    }

(当然,你可以用不同的方式进行迭代......)

答案 1 :(得分:0)

我建议每行使用line.split("[#][#]")[0](当然会包含你的例外情况)。

同样,rad.replaceAll(...)返回一个新的String,因为String是一个可以忽略的对象。你应该对返回的String执行parseInt而不是rad

只需使用以下内容代替代码中的等效2行:

String newRad = rad.replaceAll("-","");
accountNr[n] = Integer.parseInt(newRad);