【问题标题】:C# convert DOMAIN\USER to USER@DOMAINC# 将 DOMAIN\USER 转换为 USER@DOMAIN
【发布时间】:2012-08-01 14:12:37
【问题描述】:

我目前有以下代码:

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

【问题讨论】:

  • 您可以使用正则表达式来完成。不过,我会让其他人来构建那个正则表达式:)

标签: c#


【解决方案1】:

不确定你会称之为最优雅:

string[] parts = user.Split(new string[] {"/"},
                            StringSplitOptions.RemoveEmptyEntries);
string user = string.Format("{0}@{1}", parts[1], parts[0]);

【讨论】:

  • @MAfifi - 不需要,RemoveEmptyEntries 不需要。试试看。
【解决方案2】:

这个怎么样:

        string user = @"DOMAIN//USER";
        Regex pattern = new Regex("[/]+");
        var sp = pattern.Split(user);
        user = sp[1] + "@" + sp[0];
        Console.WriteLine(user);

【讨论】:

  • 啊,这会教我暂时理解正则表达式。 +1
【解决方案3】:

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);

【讨论】:

    【解决方案4】:

    你可以试试这个:

    String[] parts = user.Split(new String[] {@"\", @"\\"}, StringSplitOptions.RemoveEmptyEntries);
    user = String.Format("{0}@{1}", parts[1], parts[0]);
    

    【讨论】:

      【解决方案5】:

      为了添加另一个选项,这里是:

      string user = @"DOMAIN//USER";
      string result = user.Substring(0, user.IndexOf("/")) + "@" + user.Substring(user.LastIndexOf("/") + 1, user.Length - (user.LastIndexOf("/") + 1));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多