【问题标题】:Split a string by capital letters in DataFormatString C# - MySQL在DataFormatString C#中用大写字母拆分字符串 - MySQL
【发布时间】:2025-12-26 03:25:17
【问题描述】:

我有一个使用 MySQL 数据库的 Data Gridview。

我在 DB 的许多条目中有很多值,例如:

  • 美国

  • 英国

    并且输出需要是-->

  • 美国

  • 英国

我需要将代码放入 DataFormatString。 我需要在 DataFormatString 中插入什么代码?

【问题讨论】:

    标签: c# mysql visual-studio-2012 datagridview


    【解决方案1】:

    也许你可以拆分字符串然后组合字符:)

    static string CapitalSplit(string str)
    {
        StringBuilder result = new StringBuilder();
        foreach (char c in str)
        {
            if (char.IsUpper(c))
                result.Append(' ').Append(c);
            else
                result.Append(c);
        }
    
        return result.ToString().TrimStart(' ');
    }
    

    测试:

    CapitalSplit("AaaBbb");

    输出: 呸呸呸

    【讨论】:

    • 但是我不明白,在我把这段代码放在后面的代码之后,我是否需要这样调用它:DataFormatString="{CapitalSplit}"
    • msdn.microsoft.com/en-us/library/… 。看来您不能使用简单的 DataFormatString 来实现这一点。您需要编写一个函数来手动更改数据格式。
    • @YuvalSP,他的功能不能这样工作。要使用它,您必须在从数据库接收它们和将它们显示给用户之间的某个地方更改值。那么你不必使用任何 DataFormatString。
    • @rufanov - 我需要在 MySQL 中编写什么函数来拆分单词?
    • @YuvalSP,单词可以在 MySQL 中使用 LEFT()/MID()/RIGHT()/SUBSTRING()/SUBSTRING_INDEX() 函数进行拆分,然后可以使用“||”连接它们操作员。但它的功能非常简单。如果你想在 MySQL 端使用这种格式格式化这个字符串,那么你很可能需要编写自己的用户定义函数(UDF)。标准 MySQL 文本操作功能非常有限。
    【解决方案2】:

    没有可以在大写字母之间添加空格的标准格式字符串。要使用 DataFormatString 执行此操作,您必须编写自己的类来实现 IFormatProviderICustomFormatter 接口来处理一些新的格式说明符。然后你可以让 BoundField 使用你的类进行格式化。 DataFormatString 将仅包含您的自定义格式说明符(类似于“{0:SplitByCaptialLetters}”)。

    【讨论】: