Simple text to HTML conversion

前端 未结 6 720
醉梦人生
醉梦人生 2021-01-04 07:33

I have a very simple asp:textbox with the multiline attribute enabled. I then accept just text, with no markup, from the textbox. Is there a comm

相关标签:
6条回答
  • 2021-01-04 08:07

    Combining all previous plus considering titles and subtitles within the text comes up with this:

    public static string ToHtml(this string text)
    {
        var sb = new StringBuilder();
    
        var sr = new StringReader(text);
        var str = sr.ReadLine();
        while (str != null)
        {
            str = str.TrimEnd();
            str.Replace("  ", "  ");
            if (str.Length > 80)
            {
                sb.AppendLine($"<p>{str}</p>");
            }
            else if (str.Length > 0)
            {
                sb.AppendLine($"{str}</br>");
            }
            str = sr.ReadLine();
        }
    
        return sb.ToString();
    }
    

    the snippet could be enhanced by defining rules for short strings

    0 讨论(0)
  • 2021-01-04 08:07

    How about throwing it in a <pre> tag. Isn't that what it's there for anyway?

    0 讨论(0)
  • 2021-01-04 08:11

    I know this is an old post, but I've recently been in a similar problem using C# with MVC4, so thought I'd share my solution.

    We had a description saved in a database. The text was a direct copy/paste from a website, and we wanted to convert it into semantic HTML, using <p> tags. Here is a simplified version of our solution:

    string description = getSomeTextFromDatabase();
    foreach(var line in description.Split('\n')
    {
        Console.Write("<p>" + line + "</p>");
    }
    

    In our case, to write out a variable, we needed to prefix @ before any variable or identifiers, because of the Razor syntax in the ASP.NET MVC framework. However, I've shown this with a Console.Write, but you should be able to figure out how to implement this in your specific project based on this :)

    0 讨论(0)
  • 2021-01-04 08:19

    Depending on exactly what you are doing with the content, my typical recommendation is to ONLY use the <br /> syntax, and not to try and handle paragraphs.

    0 讨论(0)
  • 2021-01-04 08:20

    I know this is old, but I couldn't find anything better after some searching, so here is what I'm using:

    public static string TextToHtml(string text)
    {
        text = HttpUtility.HtmlEncode(text);
        text = text.Replace("\r\n", "\r");
        text = text.Replace("\n", "\r");
        text = text.Replace("\r", "<br>\r\n");
        text = text.Replace("  ", " &nbsp;");
        return text;
    }
    

    If you can't use HttpUtility for some reason, then you'll have to do the HTML encoding some other way, and there are lots of minor details to worry about (not just <>&).

    HtmlEncode only handles the special characters for you, so after that I convert any combo of carriage-return and/or line-feed to a BR tag, and any double-spaces to a single-space plus a NBSP.

    Optionally you could use a PRE tag for the last part, like so:

    public static string TextToHtml(string text)
    {
        text = "<pre>" + HttpUtility.HtmlEncode(text) + "</pre>";
        return text;
    }
    
    0 讨论(0)
  • 2021-01-04 08:23

    Your other option is to take the text box contents and instead of trying for line a paragraph breaks just put the text between PRE tags. Like this:

    <PRE>
    Your text from the text box...
    
    and a line after a break...
    </PRE>
    
    0 讨论(0)
提交回复
热议问题