使用 patterns/delimiter 从 Scanner 获取字符串
using patterns/delimiter to get String from Scanner
我有一个 .txt 文件,其中的信息排序为
信息字段;信息字段;信息字段;信息字段等。所有字段都是字符串。
如何创建获取下一个信息字段的方法?
更多信息:
我使用“;”从 Microsoft Access 中导出了 .txt 文件作为分隔符。如果我的 Scanner 名为 sc,我该如何执行 sc.nextField() 类型的方法?我最初做的是用 while 循环遍历每个带有 sc.next() 的单词,并将单词添加到字符串中,直到遇到“;”但该方法忽略了我在字段中的新行。
private static String grabField(Scanner sc) {
String wordInFloat;
String wordsToPass = "";
while (true) {
wordInFloat = sc.next();
if (wordInFloat.endsWith(";"))
break;
else
wordsToPass += wordInFloat + " ";
}
return wordsToPass;
}
您可以使用内置函数 sc.useDelimiter(";")
然后进入 while 循环来提取信息,例如:
while (sc.hasNext()) {
wordsToPass += sc.next(); // edited to change sc.nextLine() to sc.next()
}
旁注:如果您想从字符串中删除任何前导和尾随 space,在将其添加到 wordsToPass
之前,您可以使用类似 sc.nextLine().trim()
编辑:我的回答不太正确,请使用 sc.next()
而不是 sc.nextLine()
。
我有一个 .txt 文件,其中的信息排序为
信息字段;信息字段;信息字段;信息字段等。所有字段都是字符串。
如何创建获取下一个信息字段的方法?
更多信息:
我使用“;”从 Microsoft Access 中导出了 .txt 文件作为分隔符。如果我的 Scanner 名为 sc,我该如何执行 sc.nextField() 类型的方法?我最初做的是用 while 循环遍历每个带有 sc.next() 的单词,并将单词添加到字符串中,直到遇到“;”但该方法忽略了我在字段中的新行。
private static String grabField(Scanner sc) {
String wordInFloat;
String wordsToPass = "";
while (true) {
wordInFloat = sc.next();
if (wordInFloat.endsWith(";"))
break;
else
wordsToPass += wordInFloat + " ";
}
return wordsToPass;
}
您可以使用内置函数 sc.useDelimiter(";")
然后进入 while 循环来提取信息,例如:
while (sc.hasNext()) {
wordsToPass += sc.next(); // edited to change sc.nextLine() to sc.next()
}
旁注:如果您想从字符串中删除任何前导和尾随 space,在将其添加到 wordsToPass
之前,您可以使用类似 sc.nextLine().trim()
编辑:我的回答不太正确,请使用 sc.next()
而不是 sc.nextLine()
。