从整数中删除字符
Remove character from integer
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
恕我直言,最简单的方法就是使用 if 语句:
String itemIdStr = "034545104X"; // for example
if (itenIdStr.endsWith("X")) {
itemIdStr = itemIdStr.substring(0, itemIdStr.length() - 1);
}
long itemId = Long.parseLong(itemIdStr);
一种方法是 运行 文件上的预处理器转换其内容以确保它与 FileDataModel
兼容。如果您的数据格式非常简单,您可以只使用正则表达式替换。否则,我建议使用一个可以将数据带入内存的解析器,然后使用转换器执行操作,最后使用序列化程序保存结果。
类似于:
File file = new File("book_data/BX-Book-Ratings.csv");
FileDataModelTransformer transformer = new FileDataModelTransformer();
transformer.transformInPlace(file);
DataModel model = new FileDataModel(file);
顺便说一句,依赖流或缓冲区比File
更灵活。
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
恕我直言,最简单的方法就是使用 if 语句:
String itemIdStr = "034545104X"; // for example
if (itenIdStr.endsWith("X")) {
itemIdStr = itemIdStr.substring(0, itemIdStr.length() - 1);
}
long itemId = Long.parseLong(itemIdStr);
一种方法是 运行 文件上的预处理器转换其内容以确保它与 FileDataModel
兼容。如果您的数据格式非常简单,您可以只使用正则表达式替换。否则,我建议使用一个可以将数据带入内存的解析器,然后使用转换器执行操作,最后使用序列化程序保存结果。
类似于:
File file = new File("book_data/BX-Book-Ratings.csv");
FileDataModelTransformer transformer = new FileDataModelTransformer();
transformer.transformInPlace(file);
DataModel model = new FileDataModel(file);
顺便说一句,依赖流或缓冲区比File
更灵活。