我的编程空间,编程开发者的网络收藏夹
学习永远不晚

.NET正则类及其方法应用是怎样的

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

.NET正则类及其方法应用是怎样的

本篇文章为大家展示了.NET正则类及其方法应用是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1 概述

初学正则时,对于Regex类不熟悉,遇到问题不知道该用哪种方法解决,本文结合一些正则应用的典型应用场景,介绍一下Regex类的基本应用。这里重点进行.NET类的介绍,对于正则的运用,不做深入探讨。

正则的应用最终都是进行模式的匹配,而根据目的的不同,基本上可以分为以下几种应用:验证、提取、替换、分割。结合.NET提供的控件、类以及类的方法,可以很方便的实现这些应用。

以下将结合一些典型的应用场景,对.NET中常见的类、方法及属性进行介绍。本文旨在.NET类基础用法的引导,对于其中涉及到的正则表达式不做深入探讨。本文适合于在.NET平台下使用正则的初学者。

2 基础应用

1     验证

验证的目的是为了判断输入的源字符串是否符合某一规律或规则,根据需求的不同,可能是校验整个源字符串,也可能只是校验其中一个子串。

验证在.NET中一般有两种应用,一种是在验证控件RegularExpressionValidator中,另一种是在程序中。

1.1  验证控件RegularExpressionValidator
RegularExpressionValidator是.NET自带的一种客户端验证控件,通过简单的设置,即可完成对某控件输入值的校验。

基本应用语法如下:

<asp:RegularExpressionValidator       ID="RegularExpressionValidator1"       runat="server"       ControlToValidate="TextBox1"       ErrorMessage="RegularExpressionValidator"  ValidationExpression="^([1-9][0-9]*|0)(\.[0-9][2])?$">   </asp:RegularExpressionValidator>

对于RegularExpressionValidator控件不做过多介绍,只是说明一下使用时需要注意的几点:

  RegularExpressionValidator进行的是客户端验证;

  RegularExpressionValidator中正则使用的是JavaScript语法规则;

  RegularExpressionValidator控件不能验证输入是否为空。

由于RegularExpressionValidator做的是客户端验证,很容易被跳过,所以在使用RegularExpressionValidator验证的同时,还要做服务器端验证。

RegularExpressionValidator最终是要生成客户端的JavaScript代码进行验证的,所以RegularExpressionValidator使用的正则要求符合JavaScript语法规则,与.NET的几点区别:

  不支持逆序环视,也就是(?<=Expression)和(?<!Expression)这样的语法;

  元字符仅支持ASCII码,即\w等价于[a-zA-Z0-9_],\d等价于[0-9]

RegularExpressionValidator控件一般是用来验证某一控件输入的字符串整体是否符合某一规则的,所以通常情况下“^”和“$”是必不可少的;在使用“|”表示“或”的关系时,一定要用“()”来限定“|”作用范围,比如0-100可以写作“^([1-9]?[0-9]|100)$”。

RegularExpressionValidator是不能验证输入是否为空的,验证是否为空要用RequiredFieldValidator控件。

RegularExpressionValidator验证控件是.NET为方便客户端验证封装的一组验证控件之一,但由于RegularExpressionValidator受限于支持的正则语法规则,只能做有限的格式校验,一些复杂的校验可以通过自己写JavaScript代码来实现,也是很简单的。

1.2  程序验证&mdash;&mdash;IsMatch()
程序中的校验基本上就是使用IsMatch方法,验证的对象可能是源字符串的整体,也可能只是其中一个子串。

验证源字符串的整体是否符合某一规则,与使用RegularExpressionValidator时的需求基本上一致,不过由于是在.NET程序中,所以使用的是.NET的语法,比JavaScript中要强大得多。比如验证一个文本框输入的字符串是否符合某一规则,就是一个典型的验证整体的需求。

举例1:验证textBox1输入内容,要求整数部分为0或正整数,小数可有可无,有小数时必须为2位。

Regex reg = new Regex(@"^(?:[1-9][0-9]*|0)(?:\.[0-9]{2})?$");  if (reg.IsMatch(textBox1.Text))  {      richTextBox2.Text = "输入格式正确!";  }  else {      richTextBox2.Text = "输入格式错误!";  }

由于是对源字符串的整体进行验证,所以“^”和“$”是必不可少的。否则验证的结果可能是错误的,比如正则表达式“(?:[1-9][0-9]*|0)(?:\.[0-9]{2})?”,在输入“0.123”时是可以匹配成功的,匹配结果为“0.12”,此时正则只起到了匹配的作用,没有起到验证的作用。

验证源字符串的局部是否符合某一规则,就是对于源字符串中子串的校验,通常是用来判断源字符串中是否包含,或是不包含符合某一规律的子串,作用类似于string类中的IndexOf。

举例2(参考问两个正则表达式):

数据:

1985aaa1985bb

bcae1958fiefadf1955fef

atijc1944cvkd

df2564isdjfef2564d

abc1234def5678ghi5678jkl

需求1:验证字符串中任意位置出现的连续四个数字在整个字符串中是否有重复,有重复为True,无重复为False。

以上数据需求1的验证结果为True的应为:

1985aaa1985bb

df2564isdjfef2564d

abc1234def5678ghi5678jkl

因为需求中指明是任意位置的连续4个数字是否有重复,所以在找到重复前,要遍历源字符串中每一个位置时行验证,这样就不能限定开始标识符“^”;而在匹配过程中,除非一直到结尾仍找不到重复,否则只要匹配到有重复的位置就可以了,这样也不需要结束标识符“$”,所以这是典型的对字符串的子串行验证的需求。

代码实现:

string[] test = new string[] { "1985aaa1985bb", "bcae1958fiefadf1955fef", "atijc1944cvkd", "df2564isdjfef2564d", "abc1234def5678ghi5678jkl" };  Regex reg = new Regex(@"(\d{4})(?:(?!\1).)*\1");  foreach (string s in test)  {  richTextBox2.Text += "源字符串:  " + s.PadRight(25, ' ') + "验证结果:  " + reg.IsMatch(s) + "\n";  }  

由于涉及到了重复问题,所以这里用到了反向引用,对于反向引用的细节,可以参考正则基础之&mdash;&mdash;反向引用。

需求2:验证字符串中第一个出现的连续4个数字是否有重复,有重复为True,无重复为False。

以上数据需求2的验证结果为True的应为:

1985aaa1985bb

df2564isdjfef2564d

因为需求中指明是第一个是否有重复,所以需要有开始标识符“^”,来保证是第一个出现的连续4个数字;而在匹配过程中,除非一直到结尾仍找不到重复,否则只要匹配到有重复的位置就可以了,这样也不需要结束标识符“$”,所以这仍是对字符串的子串行验证的需求,只不过相对于需求1来说,加了一个限定条件。

代码实现:

string[] test = new string[] { "1985aaa1985bb", "bcae1958fiefadf1955fef", "atijc1944cvkd", "df2564isdjfef2564d", "abc1234def5678ghi5678jkl" };  Regex reg = new Regex(@"^(?:(?!\d{4}).)*(\d{4})(?:(?!\1).)*\1");  foreach (string s in test)  {       richTextBox2.Text += "源字符串:  " + s.PadRight(25, ' ') + "验证结果:  " + reg.IsMatch(s) + "\n";  }  

2     提取&mdash;&mdash;Match()、Matches()

提取主要是从源字符串中,取得一个或多个符合某一规律或规则的子串。一般来说,在字符串处理中,提取应用比较广泛。提取时用得比较多的是Match()和Matches()方法,以及结果处理时Match类和MatchCollection类的一些方法,有时也会用到Capture类的一些方法。

2.1  提取单次匹配内容&mdash;&mdash;Match()

当需要提取的内容只有一个,或是只需要获取第一次成功匹配的内容时,可以使用Match()方法。当使用Match()方法时,只要在某一位置匹配成功,就不再继续尝试匹配,并返回一个Match类型的对象。

举例:提取姓名

源字符串:姓名:张三,性别:男,年龄:25

代码实现:

string test = "姓名:张三,性别:男,年龄:25";  Regex reg = new Regex(@"(?<=姓名:)[^,]+");  Match m = reg.Match(test);  if (m.Success)    //验证是否匹配成功  {        richTextBox2.Text = m.Value;  }  

虽然Match()只是取一次匹配,但是可以通过捕获组来获取多个指定子串,比如获取第一个<a&hellip;>标签的链接和文本。

string test = "abc<a href=\"www.test1.com\">测试一</a>def<a href=\"www.test2.com\">测试二</a>ghi";  Regex reg = new Regex(@"(?is)<a(?:(?!href=).)href=(['""]?)(?<url>[^""\s>]*)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");  Match m = reg.Match(test);  if(m.Success)  {       richTextBox2.Text += m.Groups["url"].Value + "\n";      //链接       richTextBox2.Text += m.Groups["text"].Value + "\n";     //文本  }  

对于捕获组捕获结果的引用,还有一种方式

string test = "abc<a href=\"www.test1.com\">测试一</a>def<a href=\"www.test2.com\">测试二</a>ghi";  Regex reg = new Regex(@"(?is)<a(?:(?!href=).)href=(['""]?)(?<url>[^""\s>]*)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>"); Match m = reg.Match(test);  if(m.Success)  {       richTextBox2.Text += m.Result("${url}") + "\n";      //链接       richTextBox2.Text += m.Result("${text}") + "\n";     //文本  }  

这两种方法获取的结果都是一样的,使用哪一种,通常根据个人习惯而定。

2.2  提取多次匹配内容&mdash;&mdash;Matches()
当需要提取的内容有多个,并且需要提取所有符合规律的子串时,可以使用Matches()方法。当使用Matches()方法时,需要遍历源字符串的每一个位置进行尝试匹配,匹配结束返回一个MatchCollection类型的对象。

对于1.2.1节提到的提取链接和文本的例子,如果提取的是全部链接和文本,而不仅仅是第一个时,可以使用Matches()方法。

string test = "abc<a href=\"www.test1.com\">测试一</a>def<a href=\"www.test2.com\">测试二</a>ghi";   Regex reg = new Regex(@"(?is)<a(?:(?!href=).)href=(['""]?)(?<url>[^""\s>]*)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");  MatchCollection mc = reg.Matches(test);  foreach(Match m in mc)  {       richTextBox2.Text += m.Groups["url"].Value + "\n";      //链接       richTextBox2.Text += m.Groups["text"].Value + "\n";     //文本  }  

对于Matches(),某些场景下,也可以通过Count属性,用做统计符合某一规律的子串出现的次数,例如统计字符串中独立的“3”出现的次数。

string test = "137,1,33,4,3,6,21,3,35,93,2,98";  Regex reg = new Regex(@"\b3\b");  int count = reg.Matches(test).Count;    //2

这时候关心的只是匹配成功的次数,对于匹配的内容是不关心的,所以实现这种需求时,正则应尽量简洁,能达到目的即可,这样可以加快匹配效率,减少资源占用。比如上面的提取链接的源字符串中,统计<a&hellip;>标签出现的次数,一般来说,如下代码即可达到目的了。

string test = "abc<a href=\"www.test1.com\">测试一</a>def<a href=\"www.test2.com\">测试二</a>ghi";  Regex reg = new Regex(@"(?i)<a\b");  int count = reg.Matches(test).Count;    //2

2.3  捕获组匹配过程集合&mdash;&mdash;Capture
在某些情况下,一个正则表达式整体匹配一次时,其中的捕获组可能会匹配多次。

举例:

源字符串:<region name=oldslist col=1 row=2 order=asc>abcsadf </region> jfdsajf  <region name=newslist class=list col=4 row=10 order=desc>abcsadf </region>

需求:提取出每个region的属性和属性值,按region分组。

对于这个需求,可以先提取出所有region,再对每个region标签提取它的属性和属性值,但这样做比较麻烦,可以考虑在一个正则表达式中提取。由于属性的个数是不固定的,所以不能用固定个数的量词来匹配属性对,正则可以写为

(?is)<region\s+(?:(?<key>[^\s=]+)=(?<value>[^\s>]+)\s*)+>

此时如果还用Groups来取匹配结果时,由于Groups只保留最后一次匹配结果,所以只能取到最后一次匹配成功的子串。这时就要用到Captures属性。

string test = "<region name=oldslist col=1 row=2 order=asc>abcsadf </region> jfdsajf  <region name=newslist class=list col=4 row=10 order=desc>abcsadf </region>";  MatchCollection mc = Regex.Matches(test, @"(?is)<region\s+(?:(?<key>[^\s=]+)=(?<value>[^\s>]+)\s*)+>");  for (int i = 0; i < mc.Count; i++)  {      richTextBox2.Text += "第" + (i + 1) + "个region的属性:\n";      for (int j = 0; j < mc[i].Groups["key"].Captures.Count; j++)      {  richTextBox2.Text += "属性: " + mc[i].Groups["key"].Captures[j].Value.PadRight(10, ' ') + "  值: " + mc[i].Groups["value"].Captures[j].Value + "\n";       }      richTextBox2.Text += "\n";  }  

Group实际上是Capture的一个集合,在捕获组只匹配一个子串时,这个集合只有一个元素,而在捕获组先后匹配多个子串时,Groups[i].Value只保留最后一个匹配结果,而Capture集合却可以记录匹配过程中匹配到的所有子串。

Capture的应用场景并不多,对于上面的例子,如果不使用 Capture,可以通过分次匹配的方式实现,但是在一些复杂的表达式中,很难进行分次匹配,这时Capture就比较有用了。

3      替换

替换主要是从源字符串中,将符合某一规律或规则的子串替换为其它内容。一般来说,在字符串处理中,替换应用也比较广泛。替换主要是用Replace()方法,在一些替换规则复杂的应用场景中,也可能会用到委托方法。

1  一般替换

替换的目的很明确,只要找出待替换子串的规律,替换为目标子串就可以了。

举例1:

源字符串:<img class="lazy" data-src="/imgs/logo.jpg"> abc <img class="lazy" data-src="https://file.lsjlt.com/upload/202306/14/mjphoyvm1tz.gif">

需求:将相对地址替换为绝对地址,已经是绝对地址的不替换。

string test = "<img class="lazy" data-src=\"/imgs/logo.jpg\"> abc <img class="lazy" data-src=\"https://file.lsjlt.com/upload/202306/14/mjphoyvm1tz.gif\">";  Regex reg = new Regex(@"(?i)(?<=class="lazy" data-src=(['""]?))(?!http://)(?=[^'""\s>]+\1)");  string result = reg.Replace(test, "http://www.test.com");  

这里需要说明的是,在.NET中只提供了一个Replace()方法,没有提供类似于Java中的replaceAll()和replaceFirst()两种方法,所以如果在.NET中只替换第一次出现的符合规律的子串时,需要在正则表达式中处理。

举例2:

源字符串:abc123def123ghi

需求:将第一次出现的“123”替换为空,其余位置不替换。

string test = "abc123def123ghi";  Regex reg = new Regex(@"(?s)^((?:(?!123).)*)123");  string result = reg.Replace(test, "$1");  

这时用“^”限定只替换第一次出现的子串,由于绝大多数正则引擎都对“^”进行了优化,所以正则表达式在位置0处匹配成功或失败后,将不再对其它位置进行尝试匹配。

2  替换中的委托方法应用

对于一些比较复杂的替换规则,可能会用到委托方法,由于这种应用属于比较典型的一种应用,所以将在后面的文章中单独进行介绍

4     分割

分割就是用符合某一规律的子串,将源字符串分割成一个数组,主要用到的是Split()方法。由于Regex的Split()方法中,并没有提供类似于string的Split()方法的StringSplitOptions.RemoveEmptyEntries参数,而如果符合规律的子串出现在开头或结尾时,会出现不需要的空串,这时需要在正则表达式中进行一下处理。

举例1:

源字符串:汉字123文字english

需求:按英文单词和非英文单词进行分割(英文单词包括由a-z,A-Z,0-9,_组成的子串)。

string str = "汉字123文字english";  string[] result = Regex.Split(str, @"(?<!^)\b(?!$)", RegexOptions.ECMAScript);  foreach (string s in result)  {       richTextBox2.Text += s + "\n";  }  

这里分别用“(?<!^)”和“(?!$)”来限定不以开头或结尾的子串进行分割,结果中也就不会出现不必要的空串了。

还有一些应用,其实可以算作是正则就用技巧范畴的了。

举例2:

源字符串:Left(姓名,1),Left(姓名,1) ,  Left    (姓名,1)

需求:以不在“()”内的“,”进行分割。

string test = "Left(姓名,1),Left(姓名,1) ,  Left    (姓名,1)";  Regex reg = new Regex(@"(?<!\([^)]*),(?![^(]*\))");  string[] sArray = reg.Split(test);  foreach (string s in sArray)  {       richTextBox2.Text += s + "\n";  }  

使用正则的Split()方法时,有一点需求注意,那就是如果正则中出现了捕获组,那么捕获组匹配到的内容也会保存到分割结果中。

以下举例不做详细说明,看下结果基本上就明白了。

string test = "aa11<bbb>cc22<ddd>ee";  string[] temp = Regex.Split(test, @"[0-9]+(<[^>]*>)");  foreach (string s in temp)  {       richTextBox2.Text += s + "\n";  }  

如果不想把捕获组匹配到的内容也存入结果,可以使用非捕获组。

string test = "aa11<bbb>cc22<ddd>ee";  string[] temp = Regex.Split(test, @"[0-9]+(?:<[^>]*>)");  foreach (string s in temp)  {       richTextBox2.Text += s + "\n";  }  

3       扩展应用

这里介绍一些可能涉及到的一些.NET中的正则扩展应用。

1     动态生成正则时的转义&mdash;&mdash;Escape()

有时需要根据一些变量动态生成正则表达式,这时如果变量中含有正则中的元字符,会被解析成元字符,就可能会导致正则编译不通过,从而导致程序异常,需要对变量进行转义处理。Regex. Escape()方法通过替换为转义码来转义最小的字符集(\、*、+、?、|、{、[、(、)、^、$、.、# 和空白)。

比如根据用户输入的id取相应的div标签,id中没有元字符时,可以取得正确结果。

string test = "<div id=\"test1\">abc</div><div id=\"test2\">def</div>";             string[] ids = new string[] { "test1", "test2" };  foreach (string id in ids)  {  Regex reg = new Regex(@"(?is)<div\s+id=""" + id + @"""[^>]*>(?:(?!</?div\b).)*</div>");       MatchCollection mc = reg.Matches(test);       foreach (Match m in mc)       {            richTextBox2.Text += m.Value + "\n";       }  }  

但是如果输入的id中一旦出现未经转义的元字符,如“abc(”,就会抛类似于下面的异常。

正在分析“(?is)<div\s+id="abc("[^>]*>(?:(?!</?div\b).)*</div>”- ) 不足。

此时可以用Escape()方法对输入的变量进行转义处理。

string test = "<div id=\"test1\">abc</div><div id=\"test2\">def</div>";             string[] ids = new string[] { "test1", "test2", "abc(" };  foreach (string id in ids)  {       Regex reg = new Regex(@"(?is)<div\s+id=""" + Regex.Escape(id) + @"""[^>]*>(?:(?!</?div\b).)*</div>");       MatchCollection mc = reg.Matches(test);       foreach (Match m in mc)       {            richTextBox2.Text += m.Value + "\n";       }  }  

使用Escape()方法转义后,就可以得到正确的结果,而不会抛异常了。

2     静态方法

.NET中一些Regex类的常见方法都提供了相应的静态方法,可以不显式的声明Regex对象,而直接调用相应的方法,书写起来更方便,代码更简洁、易读。

比如替换IP地址最后一节为“*”,只需一行代码。

string result = Regex.Replace("10.27.123.12", @"\d+$", "*");   //10.27.123.*

静态方法每次调用都会创建一个临时的Regex对象,使用之后释放,所以每次调用静态方法时,都会重新编译,而这将会降低执行效率。因此在循环或是频繁调用的方法中,不适合使用静态方法,而需要进行显式声明Regex对象。

但是对于一些只调用一次,或是对执行效率没有要求的场景下,静态方法则是很不错的选择。

上述内容就是.NET正则类及其方法应用是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

.NET正则类及其方法应用是怎样的

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

.NET正则类及其方法应用是怎样的

本篇文章为大家展示了.NET正则类及其方法应用是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 概述初学正则时,对于Regex类不熟悉,遇到问题不知道该用哪种方法解决,本文结合一些正则应用的
2023-06-17

正则表达式用法是怎么样的

本篇文章给大家分享的是有关正则表达式用法是怎么样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。正则表达式之基本概念在我们写页面时,往往需要对表单的数据比如账号、身份证号等进行
2023-06-22

.NET Framework匿名类的操作方法是怎样的

本篇文章为大家展示了.NET Framework匿名类的操作方法是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。.NET Framework应用程序为开发人员提供了一种WEB应用程序部署的环境
2023-06-17

.NET正则表达式最佳的使用方法是什么

本文小编为大家详细介绍“.NET正则表达式最佳的使用方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“.NET正则表达式最佳的使用方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。.NET 中的正则
2023-06-29

JavaCore/HeapDump文件及其分析方法是怎么样的

今天就跟大家聊聊有关JavaCore/HeapDump文件及其分析方法是怎么样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。产生时间Java程序运行时,有时会产生JavaCore及
2023-06-17

Python中正则表达式的巧妙用法是怎么样的

Python中正则表达式的巧妙用法是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 前言正则表达式就是从字符串中发现规律,并通过“抽象”的符号表达出来。打个比方,对
2023-06-16

XP系统下正确卸载应用程序的方法是怎样的

XP系统下正确卸载应用程序的方法是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  开始——添加/删除程序——选择需要删除
2023-06-14

C++声明放置正确的应用方式是怎样的

C++声明放置正确的应用方式是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C++编程语言既然被看做是C语言的升级版本,它必然会具有C语言中的很多功能。不过其中还是有很多
2023-06-17

History是基本原理及使用方法是怎样的

这期内容当中小编将会给大家带来有关History是基本原理及使用方法是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。当我们频繁使用 Linux 命令行时,有效地使用历史记录,可以大大提高工作效率。在
2023-06-15

Python时间的实际应用方法是怎样的

Python时间的实际应用方法是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python时间是计算机应用的经常使用的语言这里我们先导入必须用到的一个module>>>I
2023-06-17

轻量应用服务器搭建数据库的方法有哪些类型及其特点

轻量应用服务器搭建数据库的方法主要包括以下几种类型:使用PostGISAPI(PostGISAPI):这种类型的应用程序使用轻量应用服务器来构建数据库,并在数据库中提供SQLServer的API。这些API可以与现有的数据库服务器进行集成,以实现数据的自动存储、更新和共享。使用WeblogicGPT:这种类型的应用程序使用WeblogicGPT作为轻量应用服务器,可以在轻量应用服务器上提供
2023-10-26

清除windows桌面应用软件快捷方式小箭头的两种实用方法是怎样的

清除桌面应用软件快捷方式小箭头的两种实用方法是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。方法一、手动修改注册表1、 执行开始—运行&mda
2023-06-14

Java中的集合框架是如何设计的?有哪些常用的集合类?(Java集合框架的架构是怎样的?请列举一些常用的集合类及其用途?)

Java集合框架是一个全面库,用于管理数据集合。其架构基于分层设计、泛型和接口/实现分离。常用的集合类包括List(ArrayList、LinkedList、Vector)、Set(HashSet、TreeSet)、Map(HashMap、TreeMap、LinkedHashMap)、Queue(ArrayDeque、ConcurrentLinkedQueue)和辅助类(Collections、Arrays、BitSet)。它们用途广泛,包括存储、检索、组织、快速访问、排序、多线程和流式处理。
Java中的集合框架是如何设计的?有哪些常用的集合类?(Java集合框架的架构是怎样的?请列举一些常用的集合类及其用途?)
2024-04-02

windows系统中文件应用属性时出错的解决方法步骤是怎样的

本篇文章给大家分享的是有关windows系统中文件应用属性时出错的解决方法步骤是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。有很多用户跟笔者一样在上网的时候遇见过“文件
2023-06-14

轻量应用服务器端口设置方法是什么样的啊怎么设置

轻量应用服务器端口设置方法是通过控制台脚本来实现的,通常是通过以下命令来配置:```/etc/servicesuser-agent$config=$/config;//添加Session和SessionManagement服务user-agent$config=$SERVICESYSTEM,$SERVICEEXPORT,$SERVICE_ACCESS;//添加HTTPHTTPServ
2023-10-26

CentOS和Redhat中锁定与解锁软件包版本的方法以及yum versionlock的使用是怎样的

本篇文章给大家分享的是有关CentOS和Redhat中锁定与解锁软件包版本的方法以及yum versionlock的使用是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。那
2023-06-10

linux系统更新正在运行进程的可执行文件需要注意的text file busy的原因及解决方法是怎样的

linux系统更新正在运行进程的可执行文件需要注意的text file busy的原因及解决方法是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。最近发现很多同学不知道线上
2023-06-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录