C# Minecraft颜色代码解析器

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&

我正在尝试制作一个minecraft颜色代码解析器。我从文本框中提取原始文本,并在富文本框中显示结果文本。 原文应该是这样的:

&4Red

此处,
&4
表示后面的文本应为红色

abc&4Red&fWhite

此文本的默认颜色(黑色)应类似于abc,“红色”应类似于红色,“白色”应类似于白色


那么,我如何解析文本以将文本分隔为“abc”、“&4Red”和“&fWhite”?

您必须了解

  • 基础C#
  • 正则表达式
  • 林克
  • 匿名类型
  • 代表
  • 但这确实起到了关键作用:

            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是我无法正确学习的东西。是的,我现在已经学会了。:)