我有一个具有以下数据格式的 csv 文件
123,"12.5","0.6","15/9/2012 12:11:19"
这些数字是:
- 订单号
- 价格
- 折扣率
- 销售日期和时间
我想从线路中提取这些数据。
我尝试过正则表达式:
String line = "123,\"12.5\",\"0.6\",\"15/9/2012 12:11:19\"";
Pattern pattern = Pattern.compile("(\\W?),\"([\\d\\.\\-]?)\",\"([\\d\\.\\-]?)\",\"([\\W\\-\\:]?)\"");
Scanner scanner = new Scanner(line);
if(scanner.hasNext(pattern)) {
...
}else{
// Alaways goes to here
}
看起来我的模式不正确,因为它总是转到 else 部分。我做错了什么?有人可以为此提出解决方案吗?
非常感谢。
最佳答案
具体拆分似乎有点过于复杂,您应该尝试按元素之间最明显的公共(public)分隔符(逗号)进行拆分。也许你应该尝试这样的事情:
final String info = "123,\"12.5\",\"0.6\",\"15/9/2012 12:11:19\"";
final String[] split = info.split(",");
final int orderNumber = Integer.parseInt(split[0]);
final double price = Double.parseDouble(split[1].replace("\"", ""));
final double discountRate = Double.parseDouble(split[2].replace("\"", ""));
final String date = split[3].replace("\"", "");
关于java - 用于提取信息的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18684440/