次の内容の txt ファイルがあるとします。
<tag><info>George 34 Washington Professor
Alexander 22 London Student
Jessica 18 Moscow Student<info><tag>
readline を使用してテキスト ファイルからパラメーターをスクープするときに、どのようにタグを無視しますか?
正規表現の何が問題になっていますか?
Scanner s = new Scanner(new File("file.txt"));
while (s.hasNext())
{
String line = s.nextLine().replaceAll("<[^>]*>", "");
System.out.println(line);
}
ただし、上記は複数行に分割されたタグでは機能しません。もう少し複雑なことを行う必要があります。
Scanner s = new Scanner(new File("file.txt"));
boolean inTag = false;
while (s.hasNext())
{
String lineTemp = s.nextLine();
for (char c: line.toCharArray())
{
switch (c)
{
case '<': inTag = true; break;
case '>': inTag = false; break;
default:
if (!inTag)
sb.append(c);
}
}
String line = sb.toString();
System.out.println(line);
}
上記のいずれも、タグの開始と終了を示す以外の場所での<
およびの出現を説明していません。>
正規表現を使用して行からタグを削除できます
String line = line.replaceAll("<.+?>", "");