【问题标题】:Use indexOf(char) and substring(int, int) to remove characters inside tags使用 indexOf(char) 和 substring(int, int) 删除标签内的字符
【发布时间】:2016-06-03 10:52:04
【问题描述】:

我试图弄清楚如何编写调用的方法,该方法不会打印< 和> 之间的字符 - 基本上在标签之间。

我需要在 while 循环中使用:length()、indexOf(char) 和 substring(int, int)。

这是我所拥有的:

import java.io.*; 
import java.util.*; 

public class Project { 


public static void main(String[] args) throws FileNotFoundException   {
 //     final String text = "";
    final String filename = "HTML_2.txt";


    try (Scanner input = new Scanner(new File(

            System.getProperty("user.home"), "HTML_2.txt"))){ //"C:\CS210DataFiles"  

        while (input.hasNextLine()) { 
            String text = stripHtmlTags(input.nextLine());
            System.out.print(stripHtmlTags(text));
    }
    }

        public static String readFile(String filename) throws FileNotFoundException {
    Scanner input = new Scanner(new File("HTML_2.txt"));
    String text = "";
    while (input.hasNextLine()) {
        text += input.nextLine() + "\n";
    }
    return text;
}
public static void stripHtmlTags(String filename) throws FileNotFoundException {
    String text = readFile(filename);
    int leftTag = text.indexOf("<");
    while (leftTag >= 0) {
        String start = text.substring(0, leftTag);
        text = text.substring(leftTag, text.length());
        int rightTag = text.indexOf(">");
        text = start + text.substring(rightTag + 1, text.length());
        leftTag = text.indexOf("<");
    }
    System.out.print(text);
}

}

现在 main 方法出了点问题

【问题讨论】:

  • 您能向我们展示示例输入和预期输出吗?也许正则表达式可以帮助你?
  • 是的,请发布示例/输出。我不确定这个项目是否会以这种方式构造输入,但如果 位于两个单独的行上,则 stripHtmlTags 方法将不起作用。
  • 不,正则表达式和简单地替换标签内的单词对我不起作用。
  • @JuliaBrosseau - 但是,样本输入和预期输出是什么?没有 I/O,人们如何回答?
  • 输入: 我的网页

    这里有很多我的猫的照片,还有我的非常酷博客页面,其中包含 关于我的拉斯维加斯之旅的精彩内容。

    这是我的猫: 正文>

标签: java tags substring indexof


【解决方案1】:

这可能对你有帮助

public void printExceptTag(String str) {
    StringBuffer ans= new StringBuffer();
    for(int i= 0; i < str.length(); i++) {
        char ch= str.charAt(i);
        if(ch == '<') {
            i= skipInBetweenTag(str, i);
            continue;
        }
        ans.append(ch);
    }
    System.out.println(ans);
}

public int skipInBetweenTag(String str, int index) {
    while(index < str.length() && str.charAt(index) != '>') index++;
    return index;
}

printExceptTag(String str) 方法接受一个字符串并打印该字符串,跳过标签之间的字符。

谢谢你..

【讨论】:

  • 你可以直接使用String的toCharArray(),然后也可以这样做。
  • 但我看到 OP 说 - 使用 length(), indexOf(char) and substring(int, int) in while loop.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 2021-05-10
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
相关资源
最近更新 更多