我使用Tokenizer来分割一个像这样分开的文本文件:
第一个名字,中间名,最后一个名字
哈利,抢劫,公园汤姆,,做
while (File.hasNext())
{
StringTokenizer strTokenizer = new StringTokenizer(File.nextLine(), ",");
while (strTokenizer.hasMoreTokens())
{
我已经用这种方法拆分了它。
问题在于,当缺少数据时(例如Tom没有中间名),它将忽略拆分(,)并将下一个值注册为中间名。
如何让它将其注册为空白?
答案 0 :(得分:0)
改为使用String.split
。
"tom,,do".split(",")
将生成一个包含3个元素的数组:tom, (blank) and do
答案 1 :(得分:0)
对我而言,就像你有两个解决方案:
答案 2 :(得分:0)
基于Davio的答案,您可以管理空白并将其替换为您自己的字符串:
String[] result = File.nextLine().split(",");
for (int x = 0; x < result.length; x++){
if (result[x].isEmpty()) {
System.out.println("Undefined");
} else
System.out.println(result[x]);
}
答案 3 :(得分:0)
StringTokenizer是为保持兼容性而保留的遗留类 原因虽然在新代码中不鼓励使用它。建议 任何寻求此功能的人都使用String的split方法 或者改为java.util.regex包
因此,您不需要使用StringTokenizer。
String.split的一个例子
String name = "name, ,last name";
String[] nameParts = name.split(",");
for (String part : nameParts) {
System.out.println("> " + part);
}
这会产生以下输出
> name
>
> last name