【发布时间】:2016-05-03 00:44:05
【问题描述】:
所以,我有一个看起来完全一样的文本文件:
<sgkljsd>::=<sdfasfda> <sadfasf>
<lol>::=<dgs> <pdja> <l>|<np>
<or>::hello|howdy
<sdfas>::=<saf>|<sdf> <adlp>
<needd>::=huge|massive|big|tall
所以,在这个文本文件中,不需要第 1 行和第 2 行,所以我跳过它们。但是,我需要第 3 行和第 5 行中的单词。我当前的代码在“|”处拆分第三行所以我要么得到“你好”,要么得到“::hello”。那么有没有办法删除一行中的元素?在第 3 行和第 5 行中,我只需要在“|”处拆分单词。我想摆脱“”中的项目。
我当前的代码如下:
Scanner scan = new Scanner(System.in);
System.out.print("Enter a file name: ");
String fileName = scan.nextLine();
File infile = new File(fileName);
Scanner readIt = new Scanner(infile);
// removes first line of file
String junkLine1 = readIt.nextLine();
// removes second line of file
String junkLine2 = readIt.nextLine();
//gets random <word> from text file
String word = readIt.nextLine();
// breaks it into "<or>hello" and "howdy"
String[]word1 = word.split("\\|");
int rnd = r.nextInt(word1.length);
String rnd_word = (word1[rndDp]);
System.out.println(rnd_word);
所以,我想做的是随机选择数组中的单词并随机打印出问候语,但我似乎无法弄清楚如何删除不必要的文本。感谢您提供有关如何解决或解决此问题的任何想法。
【问题讨论】:
-
String word = readIt.nextLine();word = word.substring(word.indexOf("::")+2);这将修剪word以在::之后开始。 -
@BethanyLouise 谢谢,这部分工作。但是,第一个单词被等号抓住了。有没有办法把它也去掉?
-
你可以使用
if (word.contains("=")) { word = word.substring(word.indexOf("=")+1); } -
你为什么用这个编辑毁了这个问题
-
@bmarkham 不确定发生了什么。感谢您修复。我正在重新输入所有内容