我有一个包含德国车牌的csv文件。结构如下: B,柏林,德国第一个B是城市的第一个大写字母,第二个位置是城市,第三个位置是州
我只想要前两个位置,B和柏林
我知道如何在Java中读取CSV文件,但我不知道如何告诉编译器“忽略”第三个位置?
public void read(){
InputStream inputStream = getResources().openRawResource(R.raw.carplates);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try {
String csvLine;
while ((csvLine = reader.readLine()) != null) {
String[] row = csvLine.split(",");
for(int i=0; i<row.length;i++){
Log.d("ROWS", row[i]);
}
}
输出是一个包含B、柏林和德国的数组。因为有400个板,所以不可能手动删除csv文件中的状态。这里的诀窍是什么?
提前谢谢你
清除
所有元素都在同一行中:B,Berlin,Germany,M,Munich,Germany...
发布于 2019-01-04 18:11:02
跳过打印最后一行:
for(int i=0; i<row.length - 1; i++){
Log.d("ROWS", row[i]);
}
如果您确定每行包含的值恰好为3个,请执行此操作。理想情况下,这些东西应该是可配置的。通常,您不希望只记录这些内容,因此可以考虑将数据映射到某个License.class,并使用license.getLetter()、license.getCity()或其他方法
发布于 2019-01-04 18:10:58
您可以更新您的for循环条件,使其仅读取列表的前两个元素。
就像这样
public void read(){
InputStream inputStream = getResources().openRawResource(R.raw.kfzkennzeichen);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try {
String csvLine;
while ((csvLine = reader.readLine()) != null) {
String[] row = csvLine.split(",");
if (row.lenght >= 2){
for(int i=0; i<2;i++){
Log.d("ROWS", row[i]);
}
}else{
Log.d("Invalid Row");
}
}
希望这能有所帮助。
发布于 2019-01-04 18:11:45
//ideally, this should be on config file
int maxIndexToRead = 2;
for(int i=0; i< maxIndexToRead;i++)
{
Log.d("ROWS", row[i]);
}
是的,Allman风格规则;)
https://stackoverflow.com/questions/54036789
复制相似问题