【发布时间】:2020-12-27 03:20:16
【问题描述】:
我是一个新开发者,这是我第一次使用winform,另外我正在接手别人的项目,所以有些事情我不完全理解。
我显示了一个“要修改的项目”下拉列表,并且这个列表是这样制作的:“public DisplayItem HorseName {get; set;}”,所以我的下拉列表中的术语是这样显示的,我想将它们分开当有大写示例时变为 2:马名。我不知道我是否应该进行拆分或 Regex.Replace,尤其是在哪里进行,因为它是经过 2-3 个位置的“要修改的项目”列表。我的客人会在请求中的 k.Name 之后,但它不起作用。
正如我告诉你的起始代码不是我的,所以放置它的地方让我感到困惑
这是我的代码:
[NonSerialized]
public static Dictionary<string, PropertyInfo> DisplayItemProperties;
static DisplaySettings()
{
DisplayItemProperties = (from p in typeof(DisplaySettings).GetProperties()
where p.PropertyType == typeof(DisplayItem)
select p).ToDictionary(k => k.Name, v => v);
}
public IEnumerable<DisplayItem> DisplayItems()
{
return DisplayItemProperties.Select(item => item.Value.GetValue(this, null)).Cast<DisplayItem>();
}
this.cbDisplaySetting.Items.AddRange(DisplaySettings.DisplayItemProperties.Keys.Cast().ToArray());
解决方案:
这个:
this.cbDisplaySetting.Items.AddRange(DisplaySettings.DisplayItemProperties.Keys.Cast<object>().ToArray());
成为:
List<string> itemsLst = DisplaySettings.DisplayItemProperties.Keys.ToList<string>();
for(var i = 0; i < itemsLst.Count; i++)
{
itemsLst[i] = Regex.Replace(itemsLst[i], "(\\B[A-Z])", " $1");
}
this.cbDisplaySetting.Items.AddRange(itemsLst.Cast<object>().ToArray());
【问题讨论】:
-
你在哪里尝试?
-
尝试以下操作:string input = "HelloWorld";字符串模式 = "(?'first'[A-Z][a-z]+)(?'second'[A-Z][a-z]+)";字符串输出 = Regex.Replace(input, pattern, "${first} ${second}");
-
@AluanHaddad 我编辑我的帖子
-
您发布的代码中没有一个包含对
Split()的调用,没关系它是否有用minimal reproducible example。也就是说,如果您想使用正则表达式来拆分字符串,为什么要调用string.Split()而不是Regex.Split()?请改进问题。
标签: c# regex dictionary split request