java - 将字符串剪切到给定索引

标签 java string cpu-word truncate html

我有一个字符串,我想将它剪辑到给定的索引处。在这种情况下,字符串可能包含 HTML 标签,我必须在剪辑时跳过这些标签。

例如,如果字符串是:

"Les pirates ont<br/>attaqué des douzaines de sites Web français";

我想将其剪辑为 25,这样我就可以获得 Les pirates ont<br/>attaqué... 。另外,我无法从中间切片单词,在剪切时,如果我发现剪切点处的字符不是空格,那么我必须从该点回溯字符串,直到找不到空格为止。如果找到任何空间,那么我将剪切到该索引。

这是我尝试过的代码,但它无限循环:

public class Test {

    private String value = "Les pirates ont<br/>attaqué des douzaines de sites Web français";
    private int clipAt = 25;

    public Test() {
        run();
    }

    private void run() {
        String elipsis = "...";
        int originalLength = value.length();
        int cliplength = clipAt - elipsis.length();
        String clipedValue = value;

        if (originalLength > cliplength) {
            char character = value.charAt(cliplength + 1);

            while (character != ' ') {
                if(character == '>'){                   
                    cliplength += count(value.substring(0, cliplength+2));       
                }

                cliplength = cliplength - 1;
                character = value.charAt(cliplength + 1);                

            }
            clipedValue = value.substring(0, cliplength + 1)+elipsis;
        } 
        System.out.println(clipedValue);
    }

    private int count(String str){      
        int length = str.length() - 1;
        char character = str.charAt(length);
        int count = 0;
        while(character != '<'){
            length--;
            character = str.charAt(length);
            count++;
        }
        System.out.println(count);
        return count;
    }

    public static void main(String... args){
        new Test();
    }
}

任何信息都会对我非常有帮助。

谢谢。

最佳答案

解析 html 并不是一件容易的事。 HTML 不是常规语言,因此正则表达式无法帮助您...... 但是您可能会发现htmlunit有帮助。另请检查the options for HTML scrapping

祝你好运!

关于java - 将字符串剪切到给定索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9564745/

相关文章:

c - 在 c 中比较不相等的 char 数组的正确方法

delphi - Delphi 和 FPC 是否有 MakeWord 函数(两个字节或字符)?

java - 如何使用 JPA 填充闭包表?

java - Android主 Activity 的元素在按下子 Activity 的后退按钮后没有响应

java - 如何在android上将kotlin转换为java?

c++ - 如何将 vector<string> 和 push_back() 格式化为其他 vector ?

xml 中的 Android 粗体文本不起作用

c - 将结果传输到txt文件C

javascript - 如何格式化包含在html结构中特定符号内的文本并对其进行格式化

java - 我应该在 Java POJO 上使用 "extends"来提取公共(public)属性吗?