c#数组字符串名称改变内容顺序
本文关键字:顺序 改变 数组 字符串 | 更新日期: 2023-09-27 18:18:28
我想弄清楚如何编写一个程序来改变数组中名称的顺序。程序应该先显示姓,后显示名,其余部分必须缩写。
static void Main(string[] args)
{
string[] names = { "Paul Page Load Wood", "Michael Kraiser Unter", "Mia Rock Spark" };
/*Present the names
names[1] = "Wood, Paul P. l.";
names[2] = "Unter, Michael K.";
names[3] = "Spark, Mia R."*/
}
你能帮个忙吗?
谢谢
到目前为止我写的是:
static void Main(string[] args)
{
string[] names = { "Paul Page Load Wood", "Michael Kraiser Unter", "Mia Rock Spark" };
int i = 0;
foreach (string name in names)
{
string[] eachName = name.Split(' '); // I was advised to no use .split
for (int j = 0; j < eachName.Length; j++)
{
Console.WriteLine("{0} {1}", j, eachName[j]);
}
i++;
Console.WriteLine();
}
}
首先,让我们详细说明规则:
-
一个部分
"John" -> "John"
(不做任何事) -
两部分
"John Smith" -> "Smith, John"
(last, first) -
三个+部分
"John Peter Jack Smith" -> "Smith, John P. J."
(last, first, other按单字母顺序排列)
private static String ReOrderNamesParts(string name) {
if (string.IsNullOrEmpty(name))
return name;
string[] parts = name.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length <= 0)
return name;
StringBuilder sb = new StringBuilder(parts[parts.Length - 1]);
if (parts.Length > 2) {
sb.Append(", ");
sb.Append(parts[0]);
}
for (int i = 1; i < parts.Length - 1; ++i) {
sb.Append(' ');
sb.Append(parts[i].Substring(0, 1));
sb.Append('.');
}
return sb.ToString();
}
所以你可以写上
string[] names = { "Paul Page Load Wood", "Michael Kraiser Unter", "Mia Rock Spark" };
for (int i = 0; i < names.Length; ++i)
names[i] = ReOrderNamesParts(names[i]);
或者如果你只想打印出来:
Console.Write(String.Join(Environment.NewLine,
names.Select(name => eOrderNamesParts(names))));