从C#中的登录id中删除域信息

本文关键字:删除 id 信息 登录 | 更新日期: 2023-09-27 17:47:49

我想从C#中的登录id中删除域/计算机信息。所以,我想让"域''我"或"域''"只是"我"。我总是可以检查其中一个的存在,并将其用作启动子字符串的索引。。。但我正在寻找更优雅、更小巧的东西。

更糟糕的情况:

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

从C#中的登录id中删除域信息

当你只有一把锤子时,一切看起来都像钉子。。。。。

使用剃须刀片----

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

您可以滥用Path类,因此:

string shortName = System.IO.Path.GetFileNameWithoutExtension(ResourceLoginName);

如何:

string shortName = ResourceLoginName.Split('''')[1]

这对两者都有效,但对命名组有效。

^(?<domain>.*)''(?<username>.*)|(?<username>[^'@]*)@(?<domain>.*)?$

我总是这样做:

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

现在您可以查看domainuser。长度,查看有多少部分,domainuser[0]表示域,domainuser[1]表示用户名。

这适用于两种有效的域登录:

var regex = @"^(.*'')?([^'@]*)(@.*)?$";
var user = Regex.Replace("domain''user", regex, "$2", RegexOptions.None);
user = Regex.Replace("user@domain.com", regex, "$2", RegexOptions.None);
        string theString = "domain''me";
        theString = theString.Split(new char[] { '''' })[theString.Split(new char[] { '''' }).Length - 1];

小猪背对Derek Smalls的回答。。。

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

为我工作。