21

C# のログイン ID からドメイン/コンピューター情報を削除したいと考えています。そこで、「Domain\me」または「Domain\me」のどちらかを「私」だけにしたいと思います。いずれかの存在をいつでもチェックでき、それをインデックスとして使用して部分文字列を開始できます...しかし、もっとエレガントでコンパクトなものを探しています。

最悪のシナリオ:

int startIndex = 0;
int indexOfSlashesSingle = ResourceLoginName.IndexOf("\");
int indexOfSlashesDouble = ResourceLoginName.IndexOf("\\");
if (indexOfSlashesSingle != -1)
    startIndex = indexOfSlashesSingle;
else
    startIndex = indexOfSlashesDouble;
string shortName = ResourceLoginName.Substring(startIndex, ResourceLoginName.Length-1);
4

8 に答える 8

42

when all you have is a hammer, everything looks like a nail.....

use a razor blade ----

using System;
using System.Text.RegularExpressions;
public class MyClass
{
    public static void Main()
    {
        string domainUser = Regex.Replace("domain\\user",".*\\\\(.*)", "$1",RegexOptions.None);
        Console.WriteLine(domainUser);  

    }

}
于 2008-10-09T02:29:56.477 に答える
27

したがって、Path クラスを悪用する可能性があります。

string shortName = System.IO.Path.GetFileNameWithoutExtension(ResourceLoginName);
于 2008-10-09T02:52:51.657 に答える
7

どうですか:

string shortName = ResourceLoginName.Split('\\')[1]
于 2011-05-02T15:25:50.120 に答える
6

これは両方で機能しますが、名前付きグループがあります。

^(?<domain>.*)\\(?<username>.*)|(?<username>[^\@]*)@(?<domain>.*)?$
于 2015-01-12T19:55:56.717 に答える
3

私はいつもこのようにしています:

    string[] domainuser;
    string Auth_User = Request.ServerVariables["AUTH_USER"].ToString().ToLower(); 
    domainuser = Auth_User.Split('\\');

ここで、domainuser.Length を調べて、そこにある部分の数と、ドメインの domainuser[0] とユーザー名の domainuser[1] を確認できます。

于 2008-10-09T01:13:35.150 に答える
2
        string theString = "domain\\me";
        theString = theString.Split(new char[] { '\\' })[theString.Split(new char[] { '\\' }).Length - 1];
于 2008-10-09T01:17:34.067 に答える
1

デレク・スモールズ・アンサーのピギー・バッキング...

Regex.Replace(User.Identity.Name,@"^(?<domain>.*)\\(?<username>.*)|(?<username>[^\@]*)@(?<domain>.*)?$", "${username}", RegexOptions.None)

私のために働いた。

于 2015-08-12T19:01:02.497 に答える