【问题标题】:Minecraft Color code parser [closed]Minecraft 颜色代码解析器 [关闭]
【发布时间】:2015-05-19 04:56:53
【问题描述】:

我正在尝试制作一个我的世界颜色代码解析器。我从文本框中获取原始文本并在富文本框中显示生成的文本。 原始文本看起来像这样:

&4红色

这里,&4 表示后面的文字应该是红色的。

abc&4Red&fWhite

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

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

【问题讨论】:

  • 你有什么问题?你有没有尝试过任何东西?
  • 当然,我试过了,但我不知道如何在上面的文本中将文本片段分隔为“abc”、“&4Red”和“&fWhite”。
  • 如果您在解析字符串时需要帮助,请询问有关解析字符串的问题。您现在的问题听起来好像是在要求我们为您制作这个。
  • 好吧,删除这个问题,去尝试你想到的方法之一,如果它很好用!如果没有,请回到这里并提出一个新问题,说明您尝试了什么并解释出了什么问题。您是否尝试过谷歌搜索“Split string C#”?
  • 我将为您提供一些关于编程的一般性建议,将您的问题分解为最小的部分并单独解决它们。你有三个问题1)我如何将abc&4Red&fWhite拆分为abc&4Red&fWhite。 2)如何从文本中剥离&#,然后存储文本表示的数字的颜色 3)如何在富文本框中显示彩色文本。 一次只关注一个问题,编写一个简单的程序,然后尝试获取字符串拆分部分,然后尝试只做解析部分,然后尝试只做显示部分。

标签: c# winforms richtextbox minecraft string-parsing


【解决方案1】:

你必须了解

  1. 基础 C#
  2. 正则表达式
  3. LINQ
  4. 匿名类型
  5. 代表

但这确实有效:

        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();

【讨论】:

  • LINQ 是我学不来的东西。
  • 好吧,我现在已经学会了。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多