在 Android studio 中 - Java
我走了不同的路,但我没能把 String 变成 Int。我有一个 csv 文件,我读取了它的值。但我无法将 id 列转换为 int。
private void getCSVData(){
inputStream = getResources().openRawResource(R.raw.book);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try {
String csvLine;
ArrayList<String> name = new ArrayList<String>();
ArrayList<String> type = new ArrayList<String>();
ArrayList<Integer> price = new ArrayList<Integer>();
ArrayList<Integer> bookId = new ArrayList<String>();
while ((csvLine = reader.readLine()) != null){
String[] values = csvLine.split(",");
bookId.add(Integer.parseInt(values[0].trim()));
name.add(values[1]);
type.add(values[2]);
price.add(Integer.parseInt(values[3].trim()));
}
comparison(name, type, price, bookId);
}
catch (IOException e) {
e.printStackTrace();
}
}
我使用.getChars()
并获得十进制代码:65279。它没有等效的Ascii代码。我意识到只有所有数据中的第一个字符有这个问题。后续记录没有问题
最佳答案
我认为输入字符串中有双引号 "
或其他类似的字符。
我猜这一定是问题所在。
values[0].trim().replace("\"", "")
====================编辑============================
从问题描述中的日志来看,它似乎不是一个正常的双引号,我检查了字符,它似乎有 ASCII 值 8220 和 8221。所以你可以做的简单方法是,
values[0].trim().replace("“", "");
values[0].trim().replace("”", "");
您还可以更通用地删除所有非数字字符,
StringBuilder builder = new StringBuilder();
for (int i = 0; i < values[0].length(); i++) {
char c = values[0].charAt(i);
if(c > 47 && c < 58){
builder.append(c);
}
}
这只是一个原始解决方案,您可以使用流来更优雅地完成它,如果您愿意,我将这部分留给您。
希望对你有帮助
关于java - 我无法将字符串转换为整数(来自 csv 文件)-输入字符串 : "4" 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61134610/