在Java中使用Scanner



编写一个类,读取n.csv文件并创建对象"Account"。这是一个测试。

代码:

import java.io.File;
import java.util.Scanner;
import java.io.FileNotFoundException;
public class AccountTest {
    public static void main(String[] args) throws FileNotFoundException {
        File file = new File("1234567890989.csv");
        Scanner scanner;
        try {
            scanner = new Scanner(file);
            while(scanner.hasNext()) {
                scanner.nextLine();
                scanner.next("Account");
                String pp = scanner.next();
                System.out.println(pp);
            }

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}    

文件:

Account Info - 14-03-2014
Account  ;1234567890989 ; EUR  ;POUPANCA ;SavingsAccount ;
Start Date ;31-10-2013
End Date ;03-01-2014
Date ;Value Date ;Description ;Draft ;Credit ;Accounting     balance ;Available balance 
31-10-2013 ;31-10-2013 ;SUMMARY ;0.0 ;200.0 ;2600.0 ;2600.0
30-11-2013 ;30-11-2013 ;SUMMARY ;0.0 ;200.0 ;2800.0 ;2800.0
31-12-2013 ;31-12-2013 ;SUMMARY ;0.0 ;200.0 ;3000.0 ;3000.0
02-01-2014 ;02-01-2014 ;TRANSF ;0.0 ;300.0 ;3300.0 ;3300.0
02-01-2014 ;02-02-2014 ;TRANSF ;0.0 ;300.0 ;3600.0 ;3600.0
03-01-2014 ;03-01-2014 ;TRANSF ;0.0 ;300.0 ;3900.0 ;3900.0

退货';1234567890989',但我只想有'1234567890989'并将其格式化为Long。

如果我理解正确,这应该可以工作-

if (scanner.hasNextLine()) {            // Check for the line.
    scanner.nextLine();                 // read the line.
    if (scanner.hasNext("Account")) {   // Check for account.
        scanner.next("Account");        // read the field.
        if (scanner.hasNext()) {        // Check if there is more.
            String pp = scanner.next(); // read it.
            if (pp.startsWith(";")) {   // remove a leading ';'
                pp = pp.substring(1);
            }
            long lpp = Long.parseLong(pp);  // convert to long.
            System.out.println(lpp);        // print it.
        }
    }
}

输出为

1234567890989

试试这个:

...
String pp = scanner.next();
String qq;
qq = StringUtils.strip(StringUtils.trim(pp), ";");

StringUtils是Apache Commons Lang 的一部分

CCD_ 1从字符串的开头和结尾移除字符,所以在调用strip之前一定要修剪空白。

默认情况下,Scanner使用空白作为分隔符。因此,Scanner.next会查看文件中的所有空间,并以此来分隔值,从而捕获分号。

您可以更改与useDelimiter方法一起使用的分隔符。沿着这些路线的一些东西应该起作用:

Scanner scanner = new Scanner(new File("1234567890989.csv")).useDelimiter(";");
while (scanner.hasNext())
{
    String token = scanner.next();
    ...
}

要将您的令牌转换为long,您必须决定令牌是否应为长,然后使用Long.parseLong(token)

相关内容

  • 没有找到相关文章

最新更新