所以,我有一个看起来完全像这样的文本文件:
<sgkljsd>::=<sdfasfda> <sadfasf>
<lol>::=<dgs> <pdja> <l>|<np>
<or>::hello|howdy
<sdfas>::=<saf>|<sdf> <adlp>
<needd>::=huge|massive|big|tall
因此,在这个文本文件中,不需要第1行和第2行,所以我只是跳过它们。但是,我需要第3行和第5行中的单词。我当前的代码在&#34; |&#34;中分割第3行。所以我得到&#34;你好&#34;或&#34; ::你好&#34;。那么有没有办法删除一行中的元素?在第3行和第5行中,我只需要在&#34; |&#34;处分割单词。我想摆脱&#34;&lt;&lt; &GT;&#34;
我目前的代码如下:
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);
所以,我想要做的是随机选择数组中的单词并随机打印出问候语,但我似乎无法弄清楚如何删除不必要的文本。感谢您提供有关如何修复或解决此问题的任何想法。
答案 0 :(得分:3)
你可以摆脱&lt; &GT;用正则表达式替换它们:
"<needd>::=huge|massive|big|tall".replaceAll("<.+?>", "");
返回:
::=huge|massive|big|tall
"<needd>::=huge|massive|big|tall".replaceAll("<.+?>::=", "");
返回:
huge|massive|big|tall
或者您也可以拆分:
"<needd>::=huge|massive|big|tall".split("<.+?>|:+|\\||=");
将返回包含以下内容的String数组:
{huge, massive, big, tall}
您可以尝试上面的组合:http://www.regexpal.com/