它将反转字符串中的姓氏和名字。还有其他更有效的方法吗?我需要使用 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())
答案 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"
。