【问题标题】:Remove empty string elements from string array in Java从Java中的字符串数组中删除空字符串元素
【发布时间】:2017-05-21 19:12:16
【问题描述】:

我正在尝试获取文本文件的内容,删除除字母以外的所有内容,然后将其转换为 Strings 的数组以单独处理单词。 我这样做是为了获取文本文件:

String temp1= IOUtils.toString(FIS,"UTF-8");
String temp2=temp1.replaceAll("[,.!;:\\r\\n]"," ");

然后为了标记字符串,我这样做:

String[] tempStringArray = temp2.split(" ");

问题是在创建数组时,在各个索引处都有空的String。这些空的String在文本文件中的换行、多个空格、替换的标点符号等位置。
我希望将这些空的 Strings 从我的 String 数组中删除,或者以它们无法进入 String 数组的方式删除。
如何做到这一点?

【问题讨论】:

    标签: java regex string


    【解决方案1】:

    由所有空格分割,例如:String[] tempStringArray = temp2.split("\\s+")

    【讨论】:

    • 但这给我们留下了数组中的空""!
    • @nayandhabarde,这是真的吗?解决方案效果很好,至少对于上述问题。也许你的有点不同。你能粘贴你的字符串吗?
    • truecaller.blog/2018/01/22/life-as-an-android-engineer 尝试请求此页面 html 作为响应,最后它有 -->\n
    【解决方案2】:

    在您的示例中,如果您的字符集 [,.!;:\r\n] 连续有多个字符,它将用多个空格替换它。当您调用 split() 方法时,它会在数组中放置空的匹配项,这些匹配项指向一行中的多个空格。

    您可以在 split() 方法中使用正则表达式,这对于您的示例会更好。

    尝试将temp2.split(" ") 替换为temp2.split("\\s+")。这将在一行中查找多个空格,并标记大空白区域周围的文本。

    【讨论】:

      【解决方案3】:

      虽然 Daniel Arthur 和 Young Millie 的答案是正确的,但可以通过直接拆分您要避免的字符来代替这两个步骤:

      String[] tempStringArray = temp1.split("[,.!;:\\s]+");
      

      【讨论】:

      • 也可以。感谢您的回答
      猜你喜欢
      • 2015-06-23
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      相关资源
      最近更新 更多