比如说一个字符串里面是“ssyyaillxx”如何将“AI”从这个字符串中提取出来?小弟新手望指教,希望能有CODE

解决方案 »

  1.   


                string s = "ssyyaillxx";
                int i = s.IndexOf("ai");
                s = s.Substring(i, 2);
      

  2.   

    var str = "ssyyaillxx";
    var filter = str.ToCharArray().GroupBy(s => s).Where(g => g.Count() == 1).Select(g => g.Key);
    var result = string.Join("", filter.ToArray());
    Console.WriteLine(result);
    Console.Read();
      

  3.   

    string test_str = "ssyyaillxx";
                    test_str=string.Join("",test_str.ToCharArray().GroupBy(a => a).Where(a => a.Count() == 1).Select(a=>a.Key).ToArray());//ai
      

  4.   

    利用Linq按每个字符分组,然后筛选出数量为1的(即出现一次的),然后在转成字符串
      

  5.   


    string str = @"dgsagsdretdddtetwq";
    char[] chars = str.ToList<char>().Distinct().ToArray<char>();
    str = new string(chars);我觉得吧 我这个比较简洁
      

  6.   

    我也还停留在这个,linq还没用过的说
      

  7.   

    这个比较复杂,可以参考KMP算法。
      

  8.   

    linq代码实现确实要优雅很多 不过你没接触过我这边写了段比较傻的代码 不知道你能不能看懂 主要就是循环然后查看当前字符和前后字符是否相等static void Main(string[] args)
            {
                var testString = "aaabbbcdefffkffff";
                var charArray = testString.ToCharArray();
                var length = charArray.Length;
                StringBuilder sb = new StringBuilder();
                List<string> returnValue = new List<string>();
                for (int i = 1; i < length; i++)
                {
                    var current = charArray[i];
                    if (i < length-1)
                    {
                        if (current == charArray[i + 1] || current == charArray[i - 1])
                        {
                            if (sb.Length != 0)
                            {
                                returnValue.Add(sb.ToString());
                                sb.Clear();
                            }
                            continue;
                        }
                        else
                        {
                            sb.Append(current);
                        }
                    }
                    else
                    {
                        if (current == charArray[i - 1])
                        {
                            continue;//检测最后一个字符是否有重复
                        }
                        else
                        {
                            sb.Append(current);
                        }
                    }
                }
                if (sb.Length != 0)
                {
                    returnValue.Add(sb.ToString());
                }
                foreach (var temp in returnValue)
                {
                    Console.WriteLine(temp);
                }
                Console.ReadLine();
            }
      

  9.   

                string testString = "aaabbbcdefffkffff";
                List<char> result = new List<char>();
                List<char> deleteitems = new List<char>();
                foreach (var item in testString)
                {
                    if (result.Contains(item))
                    {
                        result.Remove(item);
                        deleteitems.Add(item);
                    }
                    else if(!deleteitems.Contains(item))
                    {
                        result.Add(item);
                    }
                }
                return result;
      

  10.   


    string s = "ssyyaillxx";
    s = Regex.Replace(string.Join(string.Empty, s.OrderBy(c => c).ToArray()), @"(.)\1+", string.Empty);
    Console.WriteLine(s);
      

  11.   

    这个方法最后返回只是去掉重复的了吧,比如我这个字符串“ssyyaillxx”输出后结果就是“syailx”