从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);
当你只有一把锤子时,一切看起来都像钉子。。。。。
使用剃须刀片----
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)
为我工作。