根据C#中的条件将HTML字符串格式化为红色

时间:2018-07-05 13:32:09

标签: c# html .net string

我有一个HTML字符串,可以在其中从SQL数据库获取值,如下所示

"100 \n  200 \n 500 \n 1000"

我需要用新行替换<br>,如果值大于或等于500,我还需要将颜色设置为红色

我做了如下替换,效果很好:

  string test = "First line <br/>Second line<br/>First line <br/>Second line";
              Console.WriteLine(test.Replace("<br/>", "\n" ));

但是如何在此处格式化?

3 个答案:

答案 0 :(得分:1)

using System.Linq;
using System.Text;

namespace StringManipulation
{
    class Program
    {
        static void Main(string[] args)
        {
            string sql = "100 \n  200 \n 500 \n 1000";
            string html = GetHTMLForSQL(sql);
        }

        private static string GetHTMLForSQL(string sql)
        {
            int[] values = sql.Split('\n')
                .Select(s => int.Parse(s.Trim()))
                .ToArray();

            StringBuilder html = new StringBuilder();
            foreach (int val in values)
            {
                html.Append("<p" + (val >= 500 ? " style='color:red;'" : "") + ">" + val + "</p>");
            }
            return html.ToString();
        }
    }
}

:)编码愉快

答案 1 :(得分:0)

在控制台中格式化可能不是您想象的那样,但是如果您想知道如何做,请使用以下代码:

using System;
namespace tests 
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 42;
            Console.BackgroundColor = ConsoleColor.Blue;
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("White on blue.");
            Console.WriteLine("Another line.");
            Console.ResetColor();
            Console.WriteLine(x);
        }
    }
}

答案 2 :(得分:0)

您可以使用一些Linq来做到这一点。如果您要制作更多的HTML,请始终使用类而不是嵌入式格式:

var input = "100 \n  200 \n 500 \n 1000";

var output = input = string.Join("", input.Split('\n')
    .Select(x => int.Parse(x.Trim()))
    .Select(x => $"<span class=\"{(x >= 500 ? "big-number" : "small-number")}\">{x}</span>"));

此输出为:

  

100 200 500 1000

但是,如果要输出到控制台,则可以执行以下操作:

var output = input.Split('\n')
    .Select(x => int.Parse(x.Trim()));

foreach (var element in output)
{
    Console.ForegroundColor = element >= 500 
        ? ConsoleColor.Red
        : ConsoleColor.Black;

    Console.WriteLine(element);
}

请注意,如果任何值都不能解析为int,这都会爆炸,您应该在制作此生产代码之前对其进行修复。