Вы должны сделать некоторые замены в тексте программно.Вот некоторые подсказки:
- Все символы новой строки должны быть преобразованы в
"<br>\n"
(\ n для лучшей читаемости вывода). - Все CR должны быть отброшены (кто использует DOSв любом случае).
- Все пары пробелов следует заменить на
" "
- Заменить "<" на <code>"<"
- Заменить "&" на
"&"
- Все остальные символы <128 следует оставить без изменений. </li>
- Все остальные символы> = 128 следует записать как
"&#"+((int)myChar)+";"
, чтобы сделать их читаемыми в любой кодировке. - Чтобы автоматически определять ваши ссылки, вы можете использовать регулярное выражение типа
"http://[^ ]+"
или "www.[^ ]"
и конвертировать их, как сказал JB Nizet .на "<a href=\""+url+"\">"+url+"</a>"
, но только после выполнения всех других замен.
Код для этого выглядит примерно так:
public static String escape(String s) {
StringBuilder builder = new StringBuilder();
boolean previousWasASpace = false;
for( char c : s.toCharArray() ) {
if( c == ' ' ) {
if( previousWasASpace ) {
builder.append(" ");
previousWasASpace = false;
continue;
}
previousWasASpace = true;
} else {
previousWasASpace = false;
}
switch(c) {
case '<': builder.append("<"); break;
case '>': builder.append(">"); break;
case '&': builder.append("&"); break;
case '"': builder.append("""); break;
case '\n': builder.append("<br>"); break;
// We need Tab support here, because we print StackTraces as HTML
case '\t': builder.append(" "); break;
default:
if( c < 128 ) {
builder.append(c);
} else {
builder.append("&#").append((int)c).append(";");
}
}
}
return builder.toString();
}
Однако преобразование ссылки еще не выполнено.быть добавленным.Если кто-то это делает, обновите код.