[英]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.