首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将字符串剪切到给定的索引

将字符串剪切到给定的索引
EN

Stack Overflow用户
提问于 2012-03-05 18:02:39
回答 2查看 766关注 0票数 1

我有一个字符串,我想在给定的索引处对其进行剪裁。在这个场景中,字符串可能包含HTML标签,我必须在剪切时跳过这些标签。

例如,如果字符串为:

代码语言:javascript
运行
复制
"Les pirates ont<br/>attaqué des douzaines de sites Web français";

我想把它剪到25,这样我就可以得到Les pirates ont<br/>attaqué...了。此外,我不能从中间切分一个单词,而剪裁时,如果我得到剪贴点上的字符不是空格,那么我必须从该点回溯字符串,直到找不到空格。如果发现任何空间,那么我将削减到该索引。

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

代码语言:javascript
运行
复制
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();
    }
}

任何信息对我都很有帮助。

谢谢。

EN

Stack Overflow用户

发布于 2012-03-05 19:01:18

如果文本是"I am feeling <html> too good </html> today.",现在假设我说clip在14,那么我应该返回这个字符串"I am feeling <html>..."还是其他什么呢?

试试这段代码,希望这能解决这个问题:

代码语言:javascript
运行
复制
public class ClipText
{
    private void clipString(String text, int endIndex)
    {
        int i = endIndex;
        String result = new String();
        do
        {
            if (Character.isWhitespace(text.charAt(endIndex)))
            {
                result = text.substring(0, endIndex);
                result = result + "...";
                break;
            }   
            else
            {
                endIndex++;
                i++;
            }               
        }while(i <= endIndex);
        System.out.println("Result : " + result);
    }

    public static void main(String... args)
    {
        String text = "Les pirates ont<br/>attaqué des douzaines de sites Web français";
        int endIndex = 6;
        new ClipText().clipString(text, endIndex);
    }
}
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9564745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档