我目前有以下代码:
string user = @"DOMAIN\USER";
string[] parts = user.Split(new string[] { "\\" }, StringSplitOptions.None);
string user = parts[1] + "@" + parts[0];
输入字符串user
可以采用以下两种格式之一:
DOMAIN\USER
DOMAIN\\USER (with a double slash)
C#中最优雅的方式是将这些字符串中的任何一个转换为:
USER@DOMAIN
答案 0 :(得分:7)
不确定你会称之为最优雅:
string[] parts = user.Split(new string[] {"/"},
StringSplitOptions.RemoveEmptyEntries);
string user = string.Format("{0}@{1}", parts[1], parts[0]);
答案 1 :(得分:2)
这个怎么样:
string user = @"DOMAIN//USER";
Regex pattern = new Regex("[/]+");
var sp = pattern.Split(user);
user = sp[1] + "@" + sp[0];
Console.WriteLine(user);
答案 2 :(得分:2)
Oded答案的变体可能会使用Array.Reverse:
string[] parts = user.Split(new string[] {"/"},StringSplitOptions.RemoveEmptyEntries);
Array.Reverse(parts);
return String.Join("@",parts);
或者,可以使用linq(基于here):
return user.Split(new string[] {"/"}, StringSplitOptions.RemoveEmptyEntries)
.Aggregate((current, next) => next + "@" + current);
答案 3 :(得分:0)
你可以试试这个:
String[] parts = user.Split(new String[] {@"\", @"\\"}, StringSplitOptions.RemoveEmptyEntries);
user = String.Format("{0}@{1}", parts[1], parts[0]);
答案 4 :(得分:0)
为了增加另一个选项,这里是:
string user = @"DOMAIN//USER";
string result = user.Substring(0, user.IndexOf("/")) + "@" + user.Substring(user.LastIndexOf("/") + 1, user.Length - (user.LastIndexOf("/") + 1));