还在学习中,我想把每天学到的一些知识记下来,这样可以加深记忆,以后也方便自己复习吧,加油!


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace StringOperate

{

/// <summary>

/// 字符串 操作类

/// </summary>

class StrOperate

{

private static int count; //次数


public static int Count

{

get { return StrOperate.count; }

set { StrOperate.count = value; }

}


private string strContent; //字符串


public string StrContent

{

get { return strContent; }

set { strContent = value; }

}


private char searchChar; //需要查询的字符


public char SearchChar

{

get { return searchChar; }

set { searchChar = value; }

}


/// <summary>

/// 定义构造函数,初始化数据

/// </summary>

public StrOperate(string strContent, char searchChar)

{

this.strContent = strContent;

this.searchChar = searchChar;

}


#region //查询字符串中出现指定字符的次数


#region 方法一

/// <summary>

/// 在C#中,字符串就是一个字符数组,

/// 通过循环遍历字符数组中的每个元素,

/// 判断得到出现指定Char的次数

/// </summary>

/// <returns>指定Char出现的次数(个数)</returns>

public int SearchCharCount_1()

{

count = 0;

//循环遍历string中的每个元素(字符)

for (int i = 0; i < strContent.Length; i++)

{

//判断是否等于指定的字符

if (strContent[i] == searchChar)

{

//如果等于,次数加1

count++;

}

}

//返回次数

return count;

}

#endregion


#region 方法二

/// <summary>

/// 通过IndexOf()函数和Substring()函数,获得次数

/// </summary>

/// <returns>指定Char出现的次数(个数)</returns>

public int SearchCharCount_2()

{

count = 0;

string strCont = strContent;

while (true)

{

//通过IndexOf()函数 获得当前字符串中首次出现指定字符(searchChar)的位置

int indexChar = strCont.IndexOf(searchChar);

//如果出现的位置大于等于0,说明存在这个字符

if (indexChar >= 0)

{

//那么次数加1

count++;

//字符串更新(通过Substring()函数截取上次出现指定字符后面的字符串,以便下次搜索)

strCont = strCont.Substring(indexChar+1);

}

//否则出现的位置小于0,则说明当前字符串中不存在要搜索的字符了

else

{

//结束循环

break;

}

}

//返回次数

return count;

}

#endregion


#region 方法三

/// <summary>

/// 通过Split()函数,获得次数

/// </summary>

/// <returns>指定Char出现的次数(个数)</returns>

public int SearchCharCount_3()

{

count = 0;

//按照指定的字符对字符串进行拆分(那么有多少个字符就会拆分多少次)

string[] strs = strContent.Split(searchChar);

//for (int i = 0; i < strs.Length; i++)

//{

// Console.WriteLine("-" + strs[i] + "-");

//}

count = strs.Length - 1;

Console.WriteLine("Lenght = " + strs.Length);

return count;

}

#endregion


#region 方法四

/// <summary>

/// 通过LastIndexOf()函数和Substring()函数,获得次数

/// </summary>

/// <returns>指定Char出现的次数(个数)</returns>

public int SearchCharCount_4()

{

count = 0;

string strCont = strContent;

while (true)

{

//通过IndexOf()函数 获得当前字符串中首次出现指定字符(searchChar)的位置

int indexChar = strCont.LastIndexOf(searchChar);

//如果出现的位置大于等于0,说明存在这个字符

if (indexChar >= 0)

{

//那么次数加1

count++;

//字符串更新(通过Substring()函数截取上次出现指定字符后面的字符串,以便下次搜索)

strCont = strCont.Substring(0,indexChar);

}

//否则出现的位置小于0,则说明当前字符串中不存在要搜索的字符了

else

{

//结束循环

break;

}

}

//返回次数

return count;

}

#endregion


#region 方法五

/// <summary>

/// 通过indexOf()、LastIndexOf()和Substring()函数

/// </summary>

/// <returns>指定Char出现的次数(个数)</returns>

public int SearchCharCount_5()

{

count = 0;

string strCont = strContent;

while (true)

{

int indexof = strCont.IndexOf(searchChar);

int lastIndexof = strCont.LastIndexOf(searchChar);

if (indexof != lastIndexof)

{

count += 2;

strCont = strCont.Substring(indexof + 1, lastIndexof - 1 - indexof);

//bacdefa

//0123456

}

else

{

break;

}

}

return count;

}

#endregion


#region 方法六

/// <summary>

/// 使用string.ToArray()把字符串转换成一个字符数组,在判断

/// </summary>

/// <returns>指定Char出现的次数(个数)</returns>

public int SearchCharCount_6()

{

count = 0;

char[] chars = strContent.ToArray();

for (int i = 0; i < chars.Length; i++)

{

if(chars[i] == searchChar)

{

count++;

}

}

return count;

}

#endregion


#endregion

}

}