8

私は現在次のコードを持っています:

string user = @"DOMAIN\USER";
string[] parts = user.Split(new string[] { "\\" }, StringSplitOptions.None);
string user = parts[1] + "@" + parts[0];

入力文字列userは、次の2つの形式のいずれかになります。

DOMAIN\USER
DOMAIN\\USER (with a double slash)

これらの文字列のいずれかを次のように変換するC#で最もエレガントな方法は何ですか。

USER@DOMAIN
4

5 に答える 5

7

これを最もエレガントと呼ぶかどうかはわかりません。

string[] parts = user.Split(new string[] {"/"},
                            StringSplitOptions.RemoveEmptyEntries);
string user = string.Format("{0}@{1}", parts[1], parts[0]);
于 2012-08-03T14:03:09.757 に答える
2

Odedの回答のバリエーションでは、Array.Reverseを使用する場合があります。

string[] parts = user.Split(new string[] {"/"},StringSplitOptions.RemoveEmptyEntries);
Array.Reverse(parts);
return String.Join("@",parts);

または、linqを使用することもできます(ここに基づく):

return user.Split(new string[] {"/"}, StringSplitOptions.RemoveEmptyEntries)
       .Aggregate((current, next) => next + "@" + current);
于 2012-08-03T14:14:54.993 に答える
2

これはどう:

        string user = @"DOMAIN//USER";
        Regex pattern = new Regex("[/]+");
        var sp = pattern.Split(user);
        user = sp[1] + "@" + sp[0];
        Console.WriteLine(user);
于 2012-08-03T14:08:42.860 に答える
0

別のオプションを追加するために、ここにあります:

string user = @"DOMAIN//USER";
string result = user.Substring(0, user.IndexOf("/")) + "@" + user.Substring(user.LastIndexOf("/") + 1, user.Length - (user.LastIndexOf("/") + 1));
于 2012-08-03T14:18:36.597 に答える
0

あなたはこれを試すことができます:

String[] parts = user.Split(new String[] {@"\", @"\\"}, StringSplitOptions.RemoveEmptyEntries);
user = String.Format("{0}@{1}", parts[1], parts[0]);
于 2012-08-03T14:16:50.327 に答える