簡體   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