在Java中从字符串数组中删除空字符串元素

4

我正在尝试获取文本文件的内容,除了字母以外的所有内容都要删除,然后将其转换为String数组,以便单独处理单词。

我是通过以下方式获取文本文件的:

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

然后我对字符串进行标记化,做法如下:

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

问题在于当数组被创建时,在各个索引位置都存在空的String。这些空的String出现在文本文件中的换行符、超过一个空格的空白、替换标点符号等位置。
我希望从我的String数组中移除这些空的String,或者以一种方式使它们无法进入String数组。
如何做到这一点?

3个回答

5

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


但是这会在数组中留下一个空的 ""! - nayan dhabarde
@nayandhabarde,这是真的吗?解决方案很好,至少对于上面的问题是有效的。也许你的有点不同。你能粘贴你的字符串吗? - Young Emil
请尝试请求此页面的HTML作为响应:https://truecaller.blog/2018/01/22/life-as-an-android-engineer/,在末尾它有-->。 - nayan dhabarde

2
在你的例子中,如果你的字符集[,.!;:\r\n]中有多个字符连续出现,它将用一个或多个空格替换它。当你调用split()方法时,它会在数组中放置空的项,这些项指的是连续的多个空格。
你可以在split()方法中使用正则表达式,这对于你的例子会更好。
尝试将temp2.split(" ")替换为temp2.split("\\s+")。这将查找连续的多个空格,并仅在大量空白间隙周围分词。

2
虽然 Daniel Arthur 和 Young Millie 的回答是正确的,但可以通过直接在要避免的字符处拆分来替换这两个步骤:
String[] tempStringArray = temp1.split("[,.!;:\\s]+");

同样有效。感谢您的回答。 - Shankha057

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接