从枚举列表中删除下划线

本文关键字:删除 下划线 列表 枚举 | 更新日期: 2023-09-27 18:33:20

我在组合框中使用带有国家/地区的枚举。所有枚举都位于名为"国家/地区"的类中。其中一些带有像United_States_of_America这样的下划线。我需要在组合框中显示的下划线之前删除它们?

我的想法是使用 Replace("_", " ") ,如果它是一个普通字符串,则很简单,但对于组合框就不那么简单了!因此,我会珍惜一些帮助来解决这个问题吗?谢谢!

private void InitializeGUI()
{
    // Fill comboBox with countries
    cmbCountries.Items.AddRange(Enum.GetNames(typeof(Countries))); 
}

从枚举列表中删除下划线

使用 Linq :) 的强大功能

private void InitializeGUI() 
{ 
    // Fill comboBox with countries 
    cmbCountries.Items.AddRange(Enum.GetNames(typeof(Countries))
                                    .Select(c => c.Replace("_", " "));  
} 

或者使用foreach:

private void InitializeGUI() 
{ 
    // Fill comboBox with countries 
    string[] countryNames = Enum.GetNames(typeof(Countries));
    foreach (string countryName in countryNames)
    {
        cmbCountries.Items.Add(countryName.Replace("_", " "));
    }
} 
private void InitializeGUI()
{
    // Fill comboBox with countries
    cmbCountries.Items.AddRange(Enum.GetNames(typeof(Countries))
        .Select(c => c.Replace("_", " "))); 
}

这将创建一个IEnumerable<string>,其中包含您从Enum中选择的名称(干得好,使用Enum对我来说总是很糟糕),然后替换每个名称的下划线。

你也可以把它写成:

countryNames = from country
               in Enum.GetNames(typeof(Countries))
               select country.Replace("_", " ");
cmbCountries.Items.AddRange(countryNames);
Enum.GetNames(typeof(Countries)).Select(x => x.Replace("_", " "));