2 qq 26534747 qq_26534747 于 2015.07.21 17:25 提问

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

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

6个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.07.21 17:36
已采纳
 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截断成子串
2 年多之前 回复
qq_26534747
qq_26534747 Regex("(?i)(?<=a)[^a]*(?=c)");可以解释一下这个嘛?
2 年多之前 回复
qq_26534747
qq_26534747 好的答案就是被众人所推崇!谢谢!
2 年多之前 回复
CSDNXIAON
CSDNXIAON   2015.07.21 17:30

C#截取字符串
C#截取的字符串
C#字符串分离问题!
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

lpfly
lpfly   2015.07.21 17:30

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

lpfly
lpfly 回复瞪待大婶粗线: 可以参照@danielinbiti,用regex应该比较方便。
2 年多之前 回复
qq_26534747
qq_26534747 我不想换a和c,我就是要用他们来区分的,反正要两个不同的字符来夹我需要的字符串,不然直接用split就可以了
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.07.21 17:35

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

sun2000way
sun2000way   2015.07.21 18:13
        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
qq_26534747 我都说了Split了,替换成相同的字符没有意义
2 年多之前 回复
tongyi55555
tongyi55555   2015.07.21 22:09

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

Csdn user default icon
上传中...
上传图片
插入图片