Java 如果字符串上的列为空,则从数组中删除数据
如果某列为空,我需要从字符串中删除一行: 检查它:Java 如果字符串上的列为空,则从数组中删除数据,java,csv,Java,Csv,如果某列为空,我需要从字符串中删除一行: 检查它: ArrayList<String> students = new ArrayList<>(); students.add("8246, ,JUCIELLY,SOUSA,ENSINO REGULAR - MEDIO - 1ช SERIE,JUCIELLY.SOUSA@aluno.ma.gov.br,10071999"); students.add("8246,1282,JUCIELLY,SO
ArrayList<String> students = new ArrayList<>();
students.add("8246, ,JUCIELLY,SOUSA,ENSINO REGULAR - MEDIO - 1ช SERIE,JUCIELLY.SOUSA@aluno.ma.gov.br,10071999");
students.add("8246,1282,JUCIELLY,SOUSA,ENSINO REGULAR - MEDIO - 1ช SERIE,JUCIELLY.SOUSA@aluno.ma.gov.br,10071999");
students.add("8246,1282,JUCIELLY,SOUSA,ENSINO REGULAR - MEDIO - 1ช SERIE,JUCIELLY.SOUSA@aluno.ma.gov.br,10071999");
students.add("8246,,JUCIELLY,SOUSA,ENSINO REGULAR - MEDIO - 1ช SERIE,JUCIELLY.SOUSA@aluno.ma.gov.br,10071999");
students.add("8246,1282,,JUCIELLY.SOUSA@aluno.ma.gov.br,10071999");
students.add("8246,1282, ,,10071999");
ArrayList students=new ArrayList();
学生。添加(“8246,JUCIELLY,SOUSA,ENSINO REGULAR-MEDIO-1ช 意甲,尤西利。SOUSA@aluno.ma.gov.br,10071999");
学生。添加(“82461282,朱西里,苏萨,恩西诺常规-MEDIO-1ช 意甲,尤西利。SOUSA@aluno.ma.gov.br,10071999");
学生。添加(“82461282,朱西里,苏萨,恩西诺常规-MEDIO-1ช 意甲,尤西利。SOUSA@aluno.ma.gov.br,10071999");
学生。添加(“8246,JUCIELLY,SOUSA,ENSINO REGULAR-MEDIO-1ช 意甲,尤西利。SOUSA@aluno.ma.gov.br,10071999");
学生。添加(“82461282,,JUCIELLY。SOUSA@aluno.ma.gov.br,10071999");
学生。添加(“82461282,10071999”);
正如您可以看到的,此横线上的一些列为空或“”(有空格)
有人能帮我吗?我认为这很容易做到,但我尝试了,但失败了
我需要一个完整的7列的东西。不能为、、或空格=\拆分
字符串
,查看是否有任何索引为空或等于“”
String.split(",");
在
Java
中解析字符串时,可以使用string.split(identifier)
函数,该函数将在给定函数的字符上拆分字符串
,并返回要拆分的字符之间所有内容的数组
。您试图做的是解析csv(逗号分隔值)记录。因此,正如命名建议的那样,使用“,”作为分隔符
下面的示例将根据逗号值拆分字符串
(学生记录),然后循环遍历逗号之间的每个值。然后它将调用String.trim()
,这将从String
值中删除任何前导/尾随空格,然后检查String.isEmpty()
是否返回true
。如果有,我们知道这是一个应该从列表中删除的对象
String student = "8246, ,JUCIELLY,SOUSA,ENSINO REGULAR - MEDIO - 1ช SERIE,JUCIELLY.SOUSA@aluno.ma.gov.br,10071999";
String [] studentStringSplit = student.split(",");
for(String fieldValue : studentStringSplit){
if(fieldValue.trim().isEmpty()){
//remove record from list
}
}
值得注意的是,
Java
是一种面向对象的编程语言,因此,与其将一个大的字符串
传递到列表
,不如创建一个新的类
来表示这些人员记录,然后创建/使用每个人员的列表
。但是,这并不一定会改变查找空值的过程。只是旁敲侧击 您还可以使用字符串类的contains
方法:
if(element.contains(",,")||element.contains(", ,")){
//do something
}
检查空值并跟踪索引。稍后从这些索引中删除元素
ArrayList<Integer> badIndices = new ArrayList<Integer>();
for (int i=0; i<students.size ; i++)
{
if (students.get(i).matches(".*,\\s?,.*")) {
badIndices.add(i);
}
}
for (int b : badIndices)
{
student.remove(b);
}
ArrayList badIndexes=新建ArrayList();
对于(int i=0;i