我有一个字符串,我想在给定的索引处对其进行剪裁。在这个场景中,字符串可能包含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();
}
}任何信息对我都很有帮助。
谢谢。
发布于 2012-03-05 19:01:18
如果文本是"I am feeling <html> too good </html> today.",现在假设我说clip在14,那么我应该返回这个字符串"I am feeling <html>..."还是其他什么呢?
试试这段代码,希望这能解决这个问题:
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);
}
}https://stackoverflow.com/questions/9564745
复制相似问题