本帖最后由 赵文博 于 2013-3-5 01:25 编辑
楼上的解决方法可能是错误的,字符串分割得到的数组长度,并不一定是出现次数。
如果字符串以要查找的'爱'作为开始和结尾,得到的分割数组会还是原来的那个。
//在字符串str中查找字符串findstr,将查找到的位置全都放到集合posList,并返回posList
static public List<int> FindStrs(string str, string findStr)
{
str = str.Trim(); //去掉空格
findStr = findStr.Trim(); //去掉空格
List<int> posList = null; //初始化返回值,用来存放要查找的字符串出现位置
if (str == "") //入口参数校验
return posList;
if (findStr == "") //入口参数校验
return posList;
posList = new List<int>();
int position = 0; //查找开始位置
int strLen = str.Length; //str的长度
int findStrLen = findStr.Length; //要查找的字符串长度
int index = -1; //字符串查找的返回值
while (position <= strLen)
{
index = str.IndexOf(findStr, position); //从position位置开始查找字符串,找不到就会返回-1
if (index == -1) //如果没有找到,就退出循环
break;
posList.Add(index);
position = index + findStrLen + 1; //更新新的查找位置
}
return posList;
}
static void Main(string[] args)
{
string str = "爱我爱的人非常的爱我,是她爱我更多,还是我爱她更多呢?爱"; //要查找的字符串
string findStr = "爱"; //要查找的子字符串
List<int> posList = FindStrs(str, findStr);
if (posList != null)
{
for (int i = 0; i < posList.Count; i++)
{
Console.WriteLine(posList);
}
Console.WriteLine("出现次数为" + posList.Count);
};
Console.ReadKey();
}
|
-
1.png
(25.25 KB, 下载次数: 40)
|