簡體   English   中英

C#縮短字符串/列表中的名稱

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM