C# 使用C“regex获取一个或多个”后面的任何单词\&引用;人物
编辑:我下面的代码确实有效,只是在从调试器输入值时无效。从调试器输入单反斜杠示例时失败,因为该单反斜杠被视为转义字符而不是反斜杠 我试图从可能是以下输入之一的字符串中获取用户别名:C# 使用C“regex获取一个或多个”后面的任何单词\&引用;人物,c#,regex,backslash,C#,Regex,Backslash,编辑:我下面的代码确实有效,只是在从调试器输入值时无效。从调试器输入单反斜杠示例时失败,因为该单反斜杠被视为转义字符而不是反斜杠 我试图从可能是以下输入之一的字符串中获取用户别名: 别名 域\别名 域\\别名 我的C#regex模式如下所示: string pattern = @"(.*\\)(.*)"; 我在代码中这样做: string alias = Regex.Replace(input, pattern, "$2", RegexOptions.None); 这将返回: 别名 域\别名
string pattern = @"(.*\\)(.*)";
我在代码中这样做:
string alias = Regex.Replace(input, pattern, "$2", RegexOptions.None);
这将返回:
private string[]CreateEmailArrayFromString(字符串p)
{
字符串[]地址=新字符串[]{string.Empty};
如果(p!=null)
{
address=p.Split(新字符[]{';',',','},StringSplitOptions.RemoveEmptyEntries);
for(int i=0;i
这是一个LINQ解决方案,适用于所有三种情况:
string str = @"domain\\alias";
string str2 = @"domain\alias";
string str3 = @"alias";
string res = new string(str.Reverse().TakeWhile(c => c != '\\').Reverse().ToArray());
此代码确实有效:
如果输入来自调试器,则可能无法工作。这就是我的情况 我刚刚运行了这个,我得到了所有三个的
“alias”
。代码中还有其他内容吗?您是否考虑过使用input.Split('\\').Last()
而不是regex?正如@Jacob所说,这很有效(切换到“context”选项卡):这段代码正确吗?它不可能真的是\*
-那根本不起作用…也许输入不是你想象的那样?@AndrewMorton-谢谢,修复了我在地址[i]上出错的问题。为什么?现在,您的代码对字符“é”不起作用,更不用说带标点符号的希伯来语或阿拉伯语字符了。你根本不需要关心这些。为什么要把绳子倒过来?
string str = @"domain\\alias";
string str2 = @"domain\alias";
string str3 = @"alias";
string res = new string(str.Reverse().TakeWhile(c => c != '\\').Reverse().ToArray());
string pattern = @"(.*\\)(.*)";
string alias = Regex.Replace(input, pattern, "$2", RegexOptions.None);