从整数中删除字符

v6ylcynt  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(379)

filedatamodel接受以下格式的数据

userId,itemId,pref(long,long,Double).

现在我有一些itemid,它在数字的末尾有一个“x”。如何编辑itemid的某些部分,以便删除“x”?是否可以用一个简单的try-catch语句来实现这一点?

DataModel model = null;
try{
    model = new FileDataModel(new File("book_data/BX-Book-Ratings.csv"));

}catch(NumberFormatException e){
    REMOVE X

}

代码:

DataModel model = new FileDataModel(new File("book_data/BX-Book-Ratings.csv"));

错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "034545104X"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Long.parseLong(Long.java:589)
    at java.lang.Long.parseLong(Long.java:631)

数据:

276725,034545104X,0
276726,155061224,5
276727,446520802,0
276729,052165615X,3
6jjcrrmo

6jjcrrmo1#

imho,最简单的方法就是使用if语句:

String itemIdStr = "034545104X"; // for example
if (itenIdStr.endsWith("X")) {
    itemIdStr = itemIdStr.substring(0, itemIdStr.length() - 1);
}
long itemId = Long.parseLong(itemIdStr);
ztyzrc3y

ztyzrc3y2#

一种方法是在文件上运行一个预处理器来转换它的内容,以确保它与 FileDataModel . 如果数据格式非常简单,可以使用正则表达式替换。否则,我建议使用一个解析器将数据放入内存,然后使用转换器执行操作,最后使用序列化程序保存结果。
比如:

File file = new File("book_data/BX-Book-Ratings.csv");
FileDataModelTransformer transformer = new FileDataModelTransformer();
transformer.transformInPlace(file);
DataModel model = new FileDataModel(file);

顺便说一下,依赖流或缓冲区比 File .

相关问题