当前位置:编程学习 > C#/ASP.NET >>

去字符串中的内容

字符串                      要取出的数
UISDA1.DAY2.E_QW,         2
UISDA1.DAY10.E_QW,      10
UISDA1.DAY100.E_QW,    100
UISDA1.UUPPI1.E_QW,     后面的1
UISDA1.ABCD4.E_QW          4
--------------------编程问答-------------------- 正则 
 @"(?is)(?<=DAY)[\d]+"; --------------------编程问答-------------------- 没懂

引用 1 楼 bdmh 的回复:
正则 
 @"(?is)(?<=DAY)[\d]+";
--------------------编程问答--------------------
引用 2 楼 Citesso 的回复:
没懂

Quote: 引用 1 楼 bdmh 的回复:

正则 
 @"(?is)(?<=DAY)[\d]+";

去看正则帮助 --------------------编程问答-------------------- 写了一个,楼主不懂正则就用土方法吧

class Program
{
    static void Main(string[] args)
    {
        string[] content = 
            {
                "UISDA1.DAY2.E_QW,",
                "UISDA1.DAY10.E_QW,",
                "UISDA1.DAY100.E_QW,",
                "UISDA1.UUPPI1.E_QW,",
                "UUISDA1.ABCD4.E_QW"
            };

        foreach (string str in content)
        {
            Console.WriteLine(ExtractNumber(str));
        }

        Console.ReadLine();
    }

    static string ExtractNumber(string txt)
    {
        string result = String.Empty;
        int start = txt.Length - 1;
        int end = start;
        while (start > 0)
        {
            if (txt[start] >= '0' && txt[start] <= '9')
            {
                end = start;
                while (start-- > 0)
                {
                    if ((txt[start] < '0' || txt[start] > '9'))
                        break;
                }
                result = txt.Substring(start + 1, end - start);
                break;
            }
            start--;
        }
        return result;
    }
}
--------------------编程问答-------------------- (?<=\w+\.[A-Z]+)\d+
string str=@"UISDA1.DAY2.E_QW,         
UISDA1.DAY10.E_QW,    
UISDA1.DAY100.E_QW,    
UISDA1.UUPPI1.E_QW,     
UISDA1.ABCD4.E_QW";
foreach(Match m in Regex.Matches(str,@"(?<=\w+\.[A-Z]+)\d+"))
{
  Console.WriteLine(m.Value);
} --------------------编程问答--------------------
引用 5 楼 Chinajiyong 的回复:
(?<=\w+\.[A-Z]+)\d+
string str=@"UISDA1.DAY2.E_QW,         
UISDA1.DAY10.E_QW,    
UISDA1.DAY100.E_QW,    
UISDA1.UUPPI1.E_QW,     
UISDA1.ABCD4.E_QW";
foreach(Match m in Regex.Matches(str,@"(?<=\w+\.[A-Z]+)\d+"))
{
  Console.WriteLine(m.Value);
}


string str=@"UISDA1.DAY2.E_QW,         
UISDA1.DAY10.E_QW,    
UISDA1.DAY100.E_QW,    
UISDA1.UUPPI1.E_QW,     
UISDA1.ABCD4.E_QW";
foreach(Match m in Regex.Matches(str,@"(?<=\w+\.[A-Z]+)\d+"))
{
  Console.WriteLine(m.Value);
}
--------------------编程问答-------------------- 用string.LastIndexOf('.')也可以吧 --------------------编程问答-------------------- (?<=UISDA1\.[A-Z]+)\d+ --------------------编程问答-------------------- 建议还是正则 ,这种问题正则最合适不过了。 推荐8楼
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,