为了在图表上填写轴,我需要限制输入的大小。您为图形提供了一个字符串,每个类别用字符串中的逗号分隔。问题是,如果图形以特定大小呈现,则字母开始重叠。我的字符串是名单,例如“John Smith,Steve Potatoes,Iron Man”。
我喜欢动态地将它缩短为“J Smith,S Potatoes,I Man”。这些名称也在字符串列表中,所以我也可以使用它。任何关于最佳方式的反馈都将不胜感激!
答案 0 :(得分:1)
您可以使用Regex替换字符串以用于您的目的:
^([A-Z]).*?\s(.*?)$
并像这样使用它:
var name = "John Smith";
var pattern = @"^([A-Z]).*?\s(.*?)$";
var replaced = Regex.Replace(name, pattern, "$1 $2"); //Output = J Smith
我假设您的案件只有姓名和姓氏。要将Regex应用于列表,只需使用foreach循环:
var pattern = @"^([A-Z]).*?\s(.*?)$";
var shortenedList = new List<string>();
foreach (var name in stringList)
{
shortenedList.Add(Regex.Replace(name, pattern, "$1 $2"));
}
答案 1 :(得分:1)
首先,您应该用逗号(&#39;,&#39;)拆分您的名单,然后您会得到一个列表&#34;名称姓氏&#34; 然后用空格分割每个列表项(&#39;&#39;),然后,得到第一项&#39; s子串(0,1)+&#34;。&#34;以及所有第二项。而你的名字是&#34; J。史密斯&#34;
答案 2 :(得分:1)
缩写每个名字的第一个单词...使用.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);