大家好,我正在尝试使用如下所示的预定.txt文件,并只读取<之间的文字。 >,然后将它们添加到数组并将它们写入HTML文件。 txt文件如下。 由于某种原因,它没有显示<之间的单词。 >在这。
"" = word between < >
A, <""">
B, <""">
C, <""">
etc.
这是我当前尝试从文件中读取的代码,我理解.split和.delimeter问题是这些方法在所选字符之前读取所有内容。
import java.io.*;
import java.util.Scanner;
public class TickTacTwice {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(new File("/Users/Muhammed/Documents/tic_tac_twice.txt"));
while(sc.hasNextLine()) {
String S = sc.nextLine();
String [] words = S.split("<");
System.out.println(words[0]);
}
sc.close();
}
}
非常感谢任何帮助。 感谢
答案 0 :(得分:0)
看起来你只是打印分割数组中的第一项&#34;单词&#34;,是否可能第一次出现&lt;&gt;是空的?要查看数组中的所有项,可以使用如下循环:
var i;
for (i = 0; i < words.length; i++) {
System.out.println(words[i]);
}
这些行中的每一行都将包含所有字符,直到下一个&#34;&lt;&#34;所以你需要修剪到&#34;&gt;&#34;
更简单的方法是使用正则表达式 - 在StackOverflow上有一些很好的例子。
编辑:将代码与TAsks结合起来可以产生你想要的东西:
import java.io.*;
import java.util.Scanner;
public class TickTacTwice {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(new File("/Users/Muhammed/Documents/tic_tac_twice.txt"));
while(sc.hasNextLine()) {
String S = sc.nextLine();
Pattern pattern = Pattern.compile("<(.+?)>");
Matcher m = pattern.matcher(S);
while(m.find()) {
System.out.println(m.group(0));
}
}
sc.close();
}
}