c#关于字符串截取的问题

我有个字符串比如a="abcdanmcadedcdeefako"那么我怎么能得到一个数组,其中数组的各项是字母a和c的中间字符,即第一项是"b"第二项"nm"第三项"ded"?求大神赐教,不知道是不是和Split有关?

5个回答

 static void Main(string[] args)
        {
            string a = "abcdanmcadedcdeefako";
                        Regex reg = new Regex("(?i)(?<=a)[^a]*(?=c)");
            MatchCollection mc = reg.Matches(a);
            foreach (Match m in mc)
            {
                Console.WriteLine(m.Value);
            }
        }
danielinbiti
danielinbiti 回复瞪待大婶粗线: (?i)忽略大小写,(?<=a)匹配部分左侧是a开头,(?=c)匹配部分右侧是c结尾,[^a]根据a截断成子串
大约 5 年之前 回复
qq_26534747
瞪待大婶粗线 Regex("(?i)(?<=a)[^a]*(?=c)");可以解释一下这个嘛?
大约 5 年之前 回复
qq_26534747
瞪待大婶粗线 好的答案就是被众人所推崇!谢谢!
大约 5 年之前 回复

你可以先用replace把a和c换成空格" ",然后用split,把空格错位分隔符。
由于可能有a和c连续出现的情况,你可能会有连续多个空格出现,所以用split的时候记得检查你的得到的字符串是不是空的。

lpfly
lpfly 回复瞪待大婶粗线: 可以参照@danielinbiti,用regex应该比较方便。
大约 5 年之前 回复
qq_26534747
瞪待大婶粗线 我不想换a和c,我就是要用他们来区分的,反正要两个不同的字符来夹我需要的字符串,不然直接用split就可以了
大约 5 年之前 回复
        string a = "abcdanmcadedcdeefako";
        a = a.Replace('a', ' ').Trim();  //去掉前后空格
        a = a.Replace('c', ' ').Trim();  //去掉前后空格

        string[] str = a.Split(' ') ;
        for (int i=0; i<str.Length ; i++)
        {
            if (str[i].Trim() != "")   //中间替换后有空格
            {
                MessageBox.Show(str[i]);
            }
        }
qq_26534747
瞪待大婶粗线 我都说了Split了,替换成相同的字符没有意义
大约 5 年之前 回复

foreach (string s in Regex.Matches(a, "a([a-z])+?c").Select(x => x.Groups[0].Value))
...

danielinbiti大神给的答案很棒。在JAVA中也可以

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问