前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >今天同事问我,如何将一串字符串中的数字取出来,此时不用正则表达式,更待何时。。。(Unity3D)

今天同事问我,如何将一串字符串中的数字取出来,此时不用正则表达式,更待何时。。。(Unity3D)

作者头像
恬静的小魔龙
发布2022-08-07 09:09:51
1K0
发布2022-08-07 09:09:51
举报
文章被收录于专栏:Unity3DUnity3D

一、前言

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 许多程序设计语言都支持利用正则表达式进行字符串操作。 例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

二、Unity使用正则表达式

匹配正整数:

代码语言:javascript
复制
using System.Text.RegularExpressions;
using UnityEngine;

public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "123";
        Debug.Log(IsNumber(temp));
    }

    ///<summary> 
    ///匹配正整数
    ///</summary> 
    ///<param name="strInput"></param>
    ///<returns></returns>
    public bool IsNumber(string strInput)
    {
        Regex reg = new Regex("^[0-9]*[1-9][0-9]*$");
        if (reg.IsMatch(strInput))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

结果:

在这里插入图片描述
在这里插入图片描述

匹配大写字母

代码语言:javascript
复制
using System.Text.RegularExpressions;
using UnityEngine;

public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "ABC";
        Debug.Log(IsNumber(temp));
    }
    ///<summary>
    ///匹配由26个英文字母的大写组成的字符串
    ///</summary>
    ///<param name="strInput"></param>
    ///<returns></returns>
    public bool IsCapital(string strInput)
    {
        Regex reg = new Regex("^[A-Z]+$");
        if (reg.IsMatch(strInput))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

结果:

在这里插入图片描述
在这里插入图片描述

三、Regex 类

Regex 类用于表示一个正则表达式。

下表列出了 Regex 类中一些常用的方法:

序号

方法

描述

1

public bool IsMatch( string input )

指示 Regex 构造函数中指定的正则表达式是否在指定的输入字符串中找到匹配项。

2

public bool IsMatch( string input, int startat )

指示 Regex 构造函数中指定的正则表达式是否在指定的输入字符串中找到匹配项,从字符串中指定的开始位置开始。

3

public static bool IsMatch( string input, string pattern )

指示指定的正则表达式是否在指定的输入字符串中找到匹配项。

4

public MatchCollection Matches( string input )

在指定的输入字符串中搜索正则表达式的所有匹配项。

5

public string Replace( string input, string replacement )

在指定的输入字符串中,把所有匹配正则表达式模式的所有匹配的字符串替换为指定的替换字符串。

6

public string[] Split( string input )

把输入字符串分割为子字符串数组,根据在 Regex 构造函数中指定的正则表达式模式定义的位置进行分割。

如需了解 Regex 类的完整的属性列表,请参阅微软的 C# 文档。

四、常用正则表达式

代码语言:javascript
复制
^-?\d+$   	   //匹配整数(包含正负整数)
^(-?\d+)(\.\d+)?$  //匹配浮点数(包含正负浮点数)
^[A-Za-z]+$  		//匹配26个英文字母(包含大小写)
^[A-Z]+$  		//匹配由26个英文字母(大写)
^[a-z]+$  		//匹配由26个英文字母(小写)
^[A-Za-z0-9]+$  	//匹配由数字和26个英文字母组成的字符串
^\w+$  			//匹配由数字、26个英文字母或者下划线组成的字符串
\S{6,} 				//不能为空 六位以上
[^\x00-\xff] 		//匹配双字节字符(包括汉字在内)
\d+\.\d+\.\d+\.\d+	//匹配ip地址

序号

代码

描述

1

^\d+$

匹配非负整数(正整数 + 0)

2

^[0-9]*[1-9][0-9]*$

匹配正整数

3

^((-\d+)|(0+))$

匹配非正整数(负整数 + 0)

4

^-[0-9]*[1-9][0-9]*$

匹配负整数

5

^-?\d+$

匹配整数

6

^\d+(\.\d+)?$

匹配非负浮点数(正浮点数 + 0)

7

^(([0-9]+\.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$

匹配正浮点数

8

^((-\d+(.\d+)?)|(0+(.0+)?))$

匹配非正浮点数(负浮点数 + 0)

9

^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$

匹配负浮点数

10

^(-?\d+)(.\d+)?$

匹配浮点数

11

^[A-Za-z]+$

匹配由26个英文字母组成的字符串

12

^[A-Z]+$

匹配由26个英文字母的大写组成的字符串

13

^[a-z]+$

匹配由26个英文字母的小写组成的字符串

14

^[A-Za-z0-9]+$

匹配由数字和26个英文字母组成的字符串

15

^\w+$

匹配由数字、26个英文字母或者下划线组成的字符串

16

^[\w-]+(.[\w-]+)*@[\w-]+(.[\w-]+)+$

匹配email地址

17

^[a-zA-z]+://匹配(\w+(-\w+))(.(\w+(-\w+)))(?\S)?$

匹配url

18

[\u4e00-\u9fa5]

匹配中文字符的正则表达式

19

[^\x00-\xff]

匹配双字节字符(包括汉字在内)

20

String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

21

\n[\s| ]*\r

匹配空行的正则表达式

22

/<(.*)>.*</\1>|<(.*) />

匹配HTML标记的正则表达式

23

(^\s*)|(\s*$)

匹配首尾空格的正则表达式

五、实例

实例 1 、匹配以 'm' 开头以 'e' 结尾的单词

代码语言:javascript
复制
using System.Text.RegularExpressions;
using UnityEngine;

public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "make maze and manage to measure it";
        MatchStr(temp);
    }

    public void MatchStr(string str)
    {
        Regex reg = new Regex(@"\bm\S*e\b");
        MatchCollection mat = reg.Matches(str);
        foreach (Match item in mat)
        {
            Debug.Log(item);
        }
    }
}
在这里插入图片描述
在这里插入图片描述

实例2、 替换掉多余的空格

代码语言:javascript
复制
using System.Text.RegularExpressions;
using UnityEngine;

public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "Hello              World";
        MatchStr(temp);
    }


    public void MatchStr(string str)
    {
        Regex reg = new Regex("\\s+");
        Debug.Log(reg.Replace(str, " "));
    }
}
在这里插入图片描述
在这里插入图片描述

实例3、 找到字符串中的数字并返回

代码语言:javascript
复制
using System.Text.RegularExpressions;
using UnityEngine;

public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "你好123不好";
        MatchStr(temp);
    }


    public int MatchStr(string str)
    {
        Regex r = new Regex(@"\d+", RegexOptions.IgnoreCase);
        Match m = r.Match(strNumber);
        int number = int.Parse(m.Value);
        return number;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、Unity使用正则表达式
  • 三、Regex 类
  • 四、常用正则表达式
  • 五、实例
    • 实例 1 、匹配以 'm' 开头以 'e' 结尾的单词
      • 实例2、 替换掉多余的空格
        • 实例3、 找到字符串中的数字并返回
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档