Java 将字符串剪切到给定索引
我有一个字符串,我想在给定的索引处剪切它。在这个场景中,字符串可能包含HTML标记,我必须在剪切时跳过这些标记 例如,如果字符串为:Java 将字符串剪切到给定索引,java,string,word,truncate,html,Java,String,Word,Truncate,Html,我有一个字符串,我想在给定的索引处剪切它。在这个场景中,字符串可能包含HTML标记,我必须在剪切时跳过这些标记 例如,如果字符串为: "Les pirates ont<br/>attaqué des douzaines de sites Web français"; “法兰西网站附件”; 我想把它剪成25码,这样我就可以得到Les pirates ontattaqué…。此外,我不能从中间切分一个单词,而在剪切时,如果我得到剪切点处的字符不是空格,那么我必须从该点回溯字符串,直到
"Les pirates ont<br/>attaqué des douzaines de sites Web français";
“法兰西网站附件”;
我想把它剪成25码,这样我就可以得到Les pirates ont
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();
}
}
公共类测试{
private String value=“Les pirates ont
attaquédes douzaines de sites de français”;
私人int clipAt=25;
公开考试(){
run();
}
私家车{
字符串省略=“…”;
int originalLength=value.length();
int cliplength=clipAt-elipsis.length();
字符串clipedValue=value;
如果(原始长度>剪辑长度){
char character=value.charAt(cliplength+1);
while(字符!=''){
如果(字符=='>'){
cliplength+=count(value.substring(0,cliplength+2));
}
cliplength=cliplength-1;
character=value.charAt(cliplength+1);
}
clipedValue=value.substring(0,cliplength+1)+省略;
}
系统输出打印项次(clipedValue);
}
私有整数计数(字符串str){
int length=str.length()-1;
字符=str.charAt(长度);
整数计数=0;
虽然(character!='解析html不是一件容易的任务。html不是常规语言,所以正则表达式对您没有帮助。。。
不过,您可能会发现有帮助。也请检查
祝你好运!如果文本是说“我今天感觉太好了。”
,现在假设我说clip在14,那么我是不是应该返回这个字符串“我感觉…”
或者其他什么
尝试此代码,希望此代码可以解决以下问题:
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);
}
}
公共类ClipText
{
私有void剪辑字符串(字符串文本,int-endIndex)
{
int i=结束索引;
字符串结果=新字符串();
做
{
if(Character.isWhitespace(text.charAt(endIndex)))
{
结果=text.substring(0,endIndex);
结果=结果+“…”;
打破
}
其他的
{
endIndex++;
i++;
}
}而