C# Minecraft颜色代码解析器
我正在尝试制作一个minecraft颜色代码解析器。我从文本框中提取原始文本,并在富文本框中显示结果文本。 原文应该是这样的: &4Red 此处,C# Minecraft颜色代码解析器,c#,winforms,richtextbox,minecraft,string-parsing,C#,Winforms,Richtextbox,Minecraft,String Parsing,我正在尝试制作一个minecraft颜色代码解析器。我从文本框中提取原始文本,并在富文本框中显示结果文本。 原文应该是这样的: &4Red 此处,&4表示后面的文本应为红色 abc&4Red&fWhite 此文本的默认颜色(黑色)应类似于abc,“红色”应类似于红色,“白色”应类似于白色 那么,我如何解析文本以将文本分隔为“abc”、“&4Red”和“&fWhite”?您必须了解 基础C# 正则表达式 林克 匿名类型 代表 但这确实起到了关键作用: var txt = "abc&
&4
表示后面的文本应为红色
abc&4Red&fWhite
此文本的默认颜色(黑色)应类似于abc,“红色”应类似于红色,“白色”应类似于白色
那么,我如何解析文本以将文本分隔为“abc”、“&4Red”和“&fWhite”?您必须了解
var txt = "abc&4Red&fWhite";
// Add color code Black for first item if no color code is specified
if (!txt.StartsWith("&"))
txt = "&0" + txt;
// Create a substrings list by splitting the text with a regex separator and
// keep the separators in the list (e.g. ["&0", "abc", "&4", "Red", "&f", "White"])
string pattern = "(&.)";
var substrings = Regex.Split(txt, pattern).Where(i => !string.IsNullOrEmpty(i)).ToList();
// Create 2 lists, one for texts and one for color codes
var colorCodes = substrings.Where(i => i.StartsWith("&")).ToList();
var textParts = substrings.Where(i => !i.StartsWith("&")).ToList();
// Combine the 2 intermediary list into one final result
var result = textParts.Select((item, index) => new { Text = item, ColorCode = colorCodes[index] }).ToList();
你有什么问题?你试过什么了吗?当然,我试过了,但我不知道如何区分文本片段,如上面文本中的“abc”、“&4Red”和“&fWhite”。如果你需要帮助解析字符串,请询问有关解析字符串的问题。你现在的问题听起来好像是要我们为你做这个。好吧,删除这个问题,试试你想的方法之一,如果效果很好的话!如果没有,那么就回到这里,问一个新问题,说明你尝试了什么,并解释出哪里出了问题。你有没有试过用谷歌搜索“分割字符串C#”呢?我将给你一些关于编程的一般性建议,把你的问题分解成最小的部分,然后分别解决它们。您有三个问题1)如何将
abc&4Red&fWhite
拆分为abc
、&4Red
和&fWhite
。2) 如何去除文本中的&
,然后存储文本所代表的颜色和数字3)如何在富文本框中显示彩色文本。一次只关注一个问题,编写一个简单的程序,试着得到字符串拆分部分,然后试着只做解析部分,然后试着只做显示部分。LINQ是我无法正确学习的东西。是的,我现在已经学会了。:)