私は文字列を持っており、指定されたインデックスでクリップしたいと思います。シナリオでは、文字列にHTMLタグが含まれている可能性があり、クリッピング中にこれらのタグをスキップする必要があります。例えば指定されたインデックスへの文字列のクリッピング
文字列の場合:
"Les pirates ont<br/>attaqué des douzaines de sites Web français";
と私はLes pirates ont<br/>attaqué...
を得ることができるように、25でそれをクリップします。また、私は中間から単語をスライスすることはできませんが、クリッピングポイントの文字がスペースでない場合、スペースを見つけることができなくなるまで、そのポイントからストリングをバックトラックしなければなりません。スペースが見つかったら、そのインデックスまでカットします。ここで
は、私が試したコードですが、それは無限ループしている:
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();
}
}
すべての情報は私にとって非常に参考になります。
ありがとうございました。