我有一个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" ));
但是如何在此处格式化?
答案 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
,这都会爆炸,您应该在制作此生产代码之前对其进行修复。