c#关于正则、网络连接测试的两个问题 1.为什么正则"\s"这么写就有错,而"\n"却没有错?详细解释一下原因2.c#中怎么判断网络是否出于连接状态? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、最好把整个表达式的要求说一下,不然没法判断2、public string NetStatus() { ManagementObjectCollection objects; string status = ""; ManagementObjectSearcher searcher = new ManagementObjectSearcher(); searcher.Query.QueryString = "Select * From Win32_NetworkAdapter "; objects = searcher.Get(); foreach(ManagementObject obj in objects) { foreach(PropertyData p in obj.Properties) { if(p.Name.Equals("NetConnectionStatus")) { if(p.Value!=null) { status = p.Value.ToString(); } } } } switch(status) { case "0": return "Disconnected"; case "1": return "Connecting ..."; case "2": return "Connected"; case "3": return "Disconnecting ..."; case "4": return "Hardware not present"; case "5": return "Hardware disabled"; case "6": return "Hardware malfunction"; case "7": return "Media disconnected"; case "8": return "Authenticating"; case "9": return "Authentication succeeded"; case "10": return "Authentication failed"; default: return ""; } } 第一个问题是:string pattern = "\s";这样c#涉及器直接提示我这就是一个错误的转义序列而我用string pattern = "\n";却不会出现这样的提示,为什么? \是C#中的转移字符,他后面的那个字符会被认为有特殊用途\s在C#中没有意义,因此会被报错,而\n是C#中的换行符,虽然不抱错,但是在正则表达式中写\n也起不到应有的效果,要写在正则表达式中,\要用\\来代替,也就是说,应该写成"\\s"和"\\n"分别对应正则表达式中的\s和\n两个符号 你的意思是说:\s在正则表达式中是表示:匹配空白字符,但是在c#语法中却没有实际意义,所以才导致的错误吗?如果我现在要检查用户输入的正则是否合法(能匹配我的需求)比如我要求用户输入的正则类似string pattern = @"[\s\S]*?(?<content>...)[\s\S]*"; //...表示任意字符我该怎么写我的正则去检查用户输入的正则是否合法? 你这样写string pattern = @"[\s\S]*?(?<content>...)[\s\S]*";没有问题,前面加上@了,就不会被转义了但是去掉@的话就会报“这就是一个错误的转义序列”的错误 你的要求是什么?要检查用户输入了一个\s,那在C#中得写pattern = @"\\s" 谢谢你,另外你上边那个ManagementObjectSearcher 使用的查询语句从哪里来的?都能对什么查询,我查msdn也没有找到查询这方面的 WMI我也不熟悉,MSDN中有完整的WMI参考,可以去找一下有关WMI的资料看一下 linq to xml 通过ADO.NET向数据库添加多行数据时报错 web Service中添加一个Web.Config winform下使用datagrid如何不让它自动显示列,而进行自定义显示哪? 焦点问题 求个在线考试系统 关于C#中全局变量的存放的问题,急。。。。 解码啊J!!!! 日期Calendar控件中,怎样设置使取出的日期为yyyy-mm-dd格式? 介绍有关c语言的书,及学习方法! 各位老兄,小弟要找个工作,请问c#程序员一般薪水能给多少? 坐标原点变换后,绘制矩形出现的问题?
2、
public string NetStatus()
{
ManagementObjectCollection objects;
string status = "";
ManagementObjectSearcher searcher = new ManagementObjectSearcher();
searcher.Query.QueryString = "Select * From Win32_NetworkAdapter ";
objects = searcher.Get();
foreach(ManagementObject obj in objects)
{
foreach(PropertyData p in obj.Properties)
{
if(p.Name.Equals("NetConnectionStatus"))
{
if(p.Value!=null)
{
status = p.Value.ToString();
}
}
}
}
switch(status)
{
case "0":
return "Disconnected";
case "1":
return "Connecting ...";
case "2":
return "Connected";
case "3":
return "Disconnecting ...";
case "4":
return "Hardware not present";
case "5":
return "Hardware disabled";
case "6":
return "Hardware malfunction";
case "7":
return "Media disconnected";
case "8":
return "Authenticating";
case "9":
return "Authentication succeeded";
case "10":
return "Authentication failed";
default:
return "";
}
}
string pattern = "\s";这样c#涉及器直接提示我这就是一个错误的转义序列
而我用
string pattern = "\n";却不会出现这样的提示,为什么?
\s在C#中没有意义,因此会被报错,而\n是C#中的换行符,虽然不抱错,但是在正则表达式中写\n也起不到应有的效果,要写在正则表达式中,\要用\\来代替,也就是说,应该写成
"\\s"
和
"\\n"
分别对应正则表达式中的\s和\n两个符号
如果我现在要检查用户输入的正则是否合法(能匹配我的需求)
比如我要求用户输入的正则类似
string pattern = @"[\s\S]*?(?<content>...)[\s\S]*"; //...表示任意字符
我该怎么写我的正则去检查用户输入的正则是否合法?
string pattern = @"[\s\S]*?(?<content>...)[\s\S]*";
没有问题,前面加上@了,就不会被转义了
但是去掉@的话就会报“这就是一个错误的转义序列”的错误
要检查用户输入了一个\s,那在C#中得写pattern = @"\\s"
都能对什么查询,我查msdn也没有找到查询这方面的