C#中怎么判断一个字符串中含有:字母加数字加字母,并将最后的字母全都替换掉。

如:abc123fgh、er12uiwooe变成;abc123、er12
另外如何判断第一个字符是字母开头的?

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.自定义需要进入判断的数组
            string[] strArr = { "qwe123rty", "qwe", "a13", "a1b", "123abc456", "a123e123" };

            //2.循环加载数组内容,判断并打印到控制台
            for (int i = 0; i < strArr.Length; i++)
            {
                //初始化一个正则表达式对象
                //注:^匹配输入的开始位置  $匹配输入的结尾位置
                //    [0-9]匹配任意数字    [a-zA-Z]匹配任意字母
                //    ()内是提取的信息     +限定的表达式至少出现1次
                MatchCollection matchCol = Regex.Matches(strArr[i], "^([a-zA-Z]+[0-9]+)[a-zA-Z]+$");
                //匹配到结果则输出匹配内容 否则输出无匹配内容
                if (matchCol.Count > 0 && matchCol[0].Success && matchCol[0].Groups.Count > 1)
                {
                    Console.WriteLine("{0} --> {1}", strArr[i], matchCol[0].Groups[1].Value);
                }
                else
                {
                    Console.WriteLine("{0} --> 无匹配", strArr[i]);
                }
            }
            Console.ReadKey();
        }
    }
}

写了注释你看下,如果看不懂,留言,我给你补一份截字符串的方法。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-10
string str = "abc123fgh";
string regstr = @"(^[a-z]+\d+).*";
if(Regex.IsMatch(str,regstr,RegexOptions.IgnoreCase))
    str = Regex.Replace(str, regstr, "$1");
Console.WriteLine(str);
Console.ReadKey();

//判断是否以字母开头是一样的
if(Regex.IsMatch(str,"^[a-z]",RegexOptions.IgnoreCase))

追问

$1是什么意思

追答

正则第一个捕获组

追问

非常感谢,能加我好友吗?向你请教个关于统计相同字母加数字出现的次数和相关内容的程序。

本回答被提问者和网友采纳
第2个回答  2016-11-08
正则
^[a-z]*[0-9]*
相似回答
大家正在搜