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