检测录入的字符串,将no替换为yes,我用到字符串数组来做,用循环判断,顺便想到一个问题:一次判断多个条件快,还是依次判断先决条件快?如果判断的条件更复杂一些,比如不是判断是不是no,而是一个复杂的字符串的情况下,哪种实现更好?(代码编写和运行效率兼顾)
一次多个判断的代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace e5._5._02
{
    class Program
    {
        static void Main(string[] args)
        {
            string userString,replacedString="";
            Console.WriteLine("请输入一串英文:");
            userString = Convert.ToString(Console.ReadLine());
            userString=userString.ToLower();
            char[] words = userString.ToCharArray();
            int noNum=0;
            for (int i=0;i<userString.Length;i++)
            {
                if (words[i]=='n' && words[i+1]=='o')
                {
                    noNum+=1;
                    i=i+1;
                    replacedString=replacedString+"yes";
                }
                else
                    replacedString=replacedString+words[i];
            }
            Console.WriteLine("您输入的英文中,共有{0}个no,替换后的录入结果是:\n{1}", noNum, replacedString);
            Console.ReadKey();
        }
    }
}依次判断的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace e5._5._02
{
    class Program
    {
        static void Main(string[] args)
        {
            string userString,replacedString="";
            Console.WriteLine("请输入一串英文:");
            userString = Convert.ToString(Console.ReadLine());
            userString=userString.ToLower();
            char[] words = userString.ToCharArray();
            int noNum=0;
            for (int i=0;i<userString.Length;i++)
            {
                if (words[i]=='n')
                {
                    if (words[i + 1] == 'o')
                    {
                        noNum += 1;
                        i = i + 1;
                        replacedString = replacedString + "yes";
                    }
                    else replacedString = replacedString + words[i];
                }
                else
                    replacedString=replacedString+words[i];
            }
            Console.WriteLine("您输入的英文中,共有{0}个no,替换后的录入结果是:\n{1}", noNum, replacedString);
            Console.ReadKey();
        }
    }
}

解决方案 »

  1.   

    应该用“no”做split操作,直接得到数组并计算数组的.length,然后简单地把重新用“yes”拼接起来。
      

  2.   

    两种方法一样,都麻烦,sp1234说得好
    其实replace()就挺快的么
      

  3.   

    用正则表达式参考如下:
    先找出总的匹配数
    Regex r = new Regex("(a(b))c"); //定义组
      Match m = r.Match("abdabc");
    Console.WriteLine("Number of groups found = " + m.Groups.Count); 使用replace替换no为yes即可完成
    string a=b.Replace("no","yes");
      

  4.   

    呃……split怎么设置用一个字符串来分割已知字符串为数组?