繁体   English   中英

如何在C#中轻松地从字符串数组中删除字符串的一部分

[英]How to easily remove part of string from string array in c#

我正在使用以下代码:

var names = ConfigurationManager.AppSettings.AllKeys.Where(k => k.StartsWith("name"));

我得到像键:名称1,名称2,名称16,名称18。

现在我想创建另一个数组,该数组将删除名称并仅保留1,2,16,18。 在上面的代码中,有没有简单的方法可以做到这一点? 还是分开做?

你可以直接

ConfigurationManager.AppSettings.AllKeys.Where(k => k.StartsWith("name")).Select(a => a.Replace("name",""));

我认为您的代码足够好。 通过使用子字符串可以稍微提高性能,因为它是删除前缀的简单操作:

var prefix = "name"; // could be a parameter or used as const; just for example
var nums = ConfigurationManager.AppSettings.AllKeys.Where(s => s.StartsWith(prefix)).Select(s => s.Substring(prefix.Length)).ToArray();

尝试这个:

var names = ConfigurationManager.AppSettings.AllKeys.Where(k => k.StartsWith("name")).Select(p => p.Replace("name", ""));

采用:

var namesWithoutPrefix = names.Select(n => n.Substring(4));

用“ Replace代替“ Substring可能会用一个名称替换多个子字符串(即使不这样做,速度也较慢)。

我不建议您依赖数字值的位置或字符串的长度,也不要完全依靠文本读取“名称”这一事实。 相反,您可以使用简单的正则表达式来一致地提取它:

Regex regex = new Regex(@"[0-9]+");
var numbers = ConfigurationManager.AppSettings
    .AllKeys.Select(p => regex.Match(p).Value).ToArray();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM