[英]C# Shortening names in String/List
為了填寫圖形上的軸,我需要限制輸入的大小。 您為圖形提供了一個字符串,每個類別在字符串中用逗號分隔。 問題是,如果圖形以特定大小呈現,則字母開始重疊。 我的字符串是一個名稱列表,例如“約翰·史密斯,史蒂夫·土豆,鋼鐵俠”。
我想動態地將其縮短為“ J Smith,S Potatoes,I Man”。 這些名稱也在字符串列表中,因此我也可以使用它。 任何關於最佳方法的反饋將不勝感激!
您可以使用Regex替換字符串以實現您的目的:
^([A-Z]).*?\s(.*?)$
並像這樣使用它:
var name = "John Smith";
var pattern = @"^([A-Z]).*?\s(.*?)$";
var replaced = Regex.Replace(name, pattern, "$1 $2"); //Output = J Smith
我假設您的案子只有名字和姓氏。 要將正則表達式應用於列表,只需使用foreach循環:
var pattern = @"^([A-Z]).*?\s(.*?)$";
var shortenedList = new List<string>();
foreach (var name in stringList)
{
shortenedList.Add(Regex.Replace(name, pattern, "$1 $2"));
}
首先,您應使用逗號(',')分隔名稱列表,然后以“名稱姓氏”分隔列表,然后使用空格('')分隔每個列表項,然后,獲取第一項的子字符串(0,1)+“ ”。 以及所有第二項。 您的名字叫“ J.史密斯”
縮略每個名稱的第一個字...分割使用的名字為它的部分.Split()
然后.Substring()
來簡化你怎么樣,如
string name = "John Smith";
string[] nameParts = name.Split(' ');
nameParts[0] = nameParts[0].Substring(0, 1);
string abbrName = String.Join(" ", nameParts);
Console.WriteLine(abbrName);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.