有没有另一种方法可以反转字符串中的姓氏和名字

时间:2021-03-11 20:13:39

标签: c# string

它将反转字符串中的姓氏和名字。还有其他更有效的方法吗?我需要使用 LINQ 的高性能代码。

示例输入)JOHNSON JEN 示例输入)JOHNSON JOSHUA CHUCK(最后,第一,中间) 示例输入) JOHNSON, JODY

appAm.AccountName.Replace(", ",",").Replace(" ",",").Substring(appAm.AccountName.Replace(", ", ",").Replace(" ", ",").IndexOf(",") + 1).Trim()) + " " + (appAm.AccountName.Replace(", ", ",").Replace(" ", ",").Substring(0, appAm.AccountName.Replace(", ", ",").Replace(" ", ",").IndexOf(",")).Trim())

1 个答案:

答案 0 :(得分:2)

有很多方法可以操作字符串。如果我们能看到示例输入和预期输出会很有帮助,但我相信这段代码会产生与您类似的结果:

// Create an array of the names (by splitting on commas and spaces)
var nameParts = appAm.AccountName.Split(new [] {',', ' '}, 
    StringSplitOptions.RemoveEmptyEntries);

// Reverse the order of the names
Array.Reverse(nameParts);

// Join the names again with a space
appAm.AccountName = string.Join(" ", nameParts);

此外,如果您只进行一次替换和逗号查找,您的代码会更有效率:

appAm.AccountName = appAm.AccountName.Replace(", ", ",").Replace(" ",",");
int commaPosition = appAm.AccountName.IndexOf(",")

appAm.AccountName = appAm.AccountName.Substring(commaPosition + 1) + " " + 
    appAm.AccountName.Substring(0, commaPosition)

请注意,这不是一个很好的方法,具体取决于您的需要。解析名称可能非常困难。例如,尝试使用 "Robert Downey Jr.""King Edward VII",其名称为 "Edward Albert Christian George Andrew Patrick David"