Hướng dẫn text to html converter in java - công cụ chuyển đổi văn bản sang html trong java

Tôi có chương trình Java, sẽ nhận được văn bản đơn giản từ máy chủ. Văn bản đơn giản có thể chứa URL. Có lớp nào trong thư viện Java để chuyển đổi văn bản đơn giản thành văn bản HTML không? Hoặc bất kỳ thư viện khác? Nếu không có thì giải pháp là gì?

hỏi ngày 27 tháng 2 năm 2011 lúc 18:18Feb 27, 2011 at 18:18

Hướng dẫn text to html converter in java - công cụ chuyển đổi văn bản sang html trong java

ShaisultshaisShaiful

5.6015 Huy hiệu vàng37 Huy hiệu bạc41 Huy hiệu đồng5 gold badges37 silver badges41 bronze badges

10

Bạn nên thực hiện một số thay thế trên văn bản lập trình. Đây là một số manh mối:

  • Tất cả các dòng mới nên được chuyển đổi thành "
    \n"
    (\ n cho khả năng đọc tốt hơn của đầu ra).
  • Tất cả CRS nên được bỏ (dù sao cũng sử dụng mã hóa DOS).
  • Tất cả các cặp không gian nên được thay thế bằng "  "
  • Thay thế "
  • Thay thế "&" bằng
    String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
    Pattern patt = Pattern.compile(str);
    Matcher matcher = patt.matcher(plain);
    plain = matcher.replaceAll("$1");
    
    1
  • Tất cả các ký tự khác <128 nên được để lại như họ.
  • Tất cả các ký tự khác> = 128 nên được viết là
    String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
    Pattern patt = Pattern.compile(str);
    Matcher matcher = patt.matcher(plain);
    plain = matcher.replaceAll("$1");
    
    2, để làm cho chúng có thể đọc được trong mỗi mã hóa.
  • Để tự động hóa các liên kết của bạn, bạn có thể sử dụng regex như
    String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
    Pattern patt = Pattern.compile(str);
    Matcher matcher = patt.matcher(plain);
    plain = matcher.replaceAll("$1");
    
    3 hoặc
    String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
    Pattern patt = Pattern.compile(str);
    Matcher matcher = patt.matcher(plain);
    plain = matcher.replaceAll("$1");
    
    4 và chuyển đổi chúng như JB Nizet nói. đến
    String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
    Pattern patt = Pattern.compile(str);
    Matcher matcher = patt.matcher(plain);
    plain = matcher.replaceAll("$1");
    
    5, nhưng chỉ sau khi đã thực hiện tất cả các thay thế khác.JB Nizet said. to
    String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
    Pattern patt = Pattern.compile(str);
    Matcher matcher = patt.matcher(plain);
    plain = matcher.replaceAll("$1");
    
    5, but only after having done all the other replacements.

Mã để làm điều này trông giống như thế này:

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("
"); 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(); }

Tuy nhiên, việc chuyển đổi liên kết vẫn chưa được thêm vào. Nếu ai đó làm điều đó, xin vui lòng cập nhật mã.

Đã trả lời ngày 27 tháng 2 năm 2011 lúc 18:53Feb 27, 2011 at 18:53

Hướng dẫn text to html converter in java - công cụ chuyển đổi văn bản sang html trong java

DanieldanielDaniel

27.3K20 Huy hiệu vàng88 Huy hiệu bạc132 Huy hiệu đồng20 gold badges88 silver badges132 bronze badges

8

Tôi tìm thấy một giải pháp sử dụng kết hợp mẫu. Đây là mã của tôi -

String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
Pattern patt = Pattern.compile(str);
Matcher matcher = patt.matcher(plain);
plain = matcher.replaceAll("$1");

Và đây là đầu vào và đầu ra -

Văn bản đầu vào là biến

String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
Pattern patt = Pattern.compile(str);
Matcher matcher = patt.matcher(plain);
plain = matcher.replaceAll("$1");
6:

some text and then the URL http://www.google.com and then some other text.

Đầu ra:

some text and then the URL http://www.google.com and then some other text.

Đã trả lời ngày 28 tháng 2 năm 2011 lúc 7:23Feb 28, 2011 at 7:23

ShaisultshaisShaiful

5.6015 Huy hiệu vàng37 Huy hiệu bạc41 Huy hiệu đồng5 gold badges37 silver badges41 bronze badges

Bạn nên thực hiện một số thay thế trên văn bản lập trình. Đây là một số manh mối:

private static String txtToHtml(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("
"); break; // We need Tab support here, because we print StackTraces as HTML case '\t': builder.append("     "); break; default: builder.append(c); } } String converted = builder.toString(); String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))"; Pattern patt = Pattern.compile(str); Matcher matcher = patt.matcher(converted); converted = matcher.replaceAll("$1"); return converted; }

Tất cả các dòng mới nên được chuyển đổi thành "
\n"
(\ n cho khả năng đọc tốt hơn của đầu ra).Aug 21, 2012 at 11:34

Tất cả CRS nên được bỏ (dù sao cũng sử dụng mã hóa DOS).Raposo

Tất cả các cặp không gian nên được thay thế bằng "  "5 silver badges4 bronze badges

1

Thay thế "

public static String stringToHTMLString(String string) {
    StringBuffer sb = new StringBuffer(string.length());
    // true if last char was blank
    boolean lastWasBlankChar = false;
    int len = string.length();
    char c;

    for (int i = 0; i < len; i++) {
        c = string.charAt(i);
        if (c == ' ') {
            // blank gets extra work,
            // this solves the problem you get if you replace all
            // blanks with  , if you do that you loss 
            // word breaking
            if (lastWasBlankChar) {
                lastWasBlankChar = false;
                sb.append(" ");
            } else {
                lastWasBlankChar = true;
                sb.append(' ');
            }
        } else {
            lastWasBlankChar = false;
            //
            // HTML Special Chars
            if (c == '"')
                sb.append(""");
            else if (c == '&')
                sb.append("&");
            else if (c == '<')
                sb.append("<");
            else if (c == '>')
                sb.append(">");
            else if (c == '\n')
                // Handle Newline
                sb.append("
"); else { int ci = 0xffff & c; if (ci < 160) // nothing special only 7 Bit sb.append(c); else { // Not 7 Bit use the unicode system sb.append("&#"); sb.append(new Integer(ci).toString()); sb.append(';'); } } } } return sb.toString(); }

Thay thế "&" bằng

String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
Pattern patt = Pattern.compile(str);
Matcher matcher = patt.matcher(plain);
plain = matcher.replaceAll("$1");
1Mar 17, 2017 at 9:43

Hướng dẫn text to html converter in java - công cụ chuyển đổi văn bản sang html trong java

Tất cả các ký tự khác <128 nên được để lại như họ.Mohit Singh

Tất cả các ký tự khác> = 128 nên được viết là

String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
Pattern patt = Pattern.compile(str);
Matcher matcher = patt.matcher(plain);
plain = matcher.replaceAll("$1");
2, để làm cho chúng có thể đọc được trong mỗi mã hóa.2 gold badges23 silver badges25 bronze badges

Để tự động hóa các liên kết của bạn, bạn có thể sử dụng regex như

String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
Pattern patt = Pattern.compile(str);
Matcher matcher = patt.matcher(plain);
plain = matcher.replaceAll("$1");
3 hoặc
String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
Pattern patt = Pattern.compile(str);
Matcher matcher = patt.matcher(plain);
plain = matcher.replaceAll("$1");
4 và chuyển đổi chúng như JB Nizet nói. đến
String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
Pattern patt = Pattern.compile(str);
Matcher matcher = patt.matcher(plain);
plain = matcher.replaceAll("$1");
5, nhưng chỉ sau khi đã thực hiện tất cả các thay thế khác.is a URL (which is different from containing a hyperlink, as you wrote in your question), then transforming it into a hyperlink in HTML is simply done by

String hyperlink = "" + url + "";

Mã để làm điều này trông giống như thế này:Feb 27, 2011 at 18:44

Tuy nhiên, việc chuyển đổi liên kết vẫn chưa được thêm vào. Nếu ai đó làm điều đó, xin vui lòng cập nhật mã.JB Nizet

Đã trả lời ngày 27 tháng 2 năm 2011 lúc 18:5388 gold badges1195 silver badges1235 bronze badges

4

Danieldaniel

private static String htmlifyPlain(String textIn) {
    SpannableString spannable = SpannableString.valueOf(textIn);
    Linkify.addLinks(spannable, Linkify.WEB_URLS);
    return Html.toHtml(spannable);
}

27.3K20 Huy hiệu vàng88 Huy hiệu bạc132 Huy hiệu đồngSep 19, 2016 at 19:52

Tôi tìm thấy một giải pháp sử dụng kết hợp mẫu. Đây là mã của tôi -yvolk

Và đây là đầu vào và đầu ra -3 gold badges21 silver badges25 bronze badges