检测录入的字符串,将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();
}
}
}
一次多个判断的代码如下:
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();
}
}
}
其实replace()就挺快的么
先找出总的匹配数
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");