c#中的字符串查找函数
发布网友
发布时间:2022-05-11 21:30
我来回答
共5个回答
热心网友
时间:2023-10-21 06:39
1、首先,自定义一个函数,实现是否子串的判断。
2、自定义函数中,定义一个字符数组,保存得到的子串。
3、如果子串为空,则输出整个字符串c。
4、用while语句循环判断字符串的每个字符,条件为首字符存在。
5、逐一判断每个字符,如果字符都相等,说明存在子串,输出得到的子串。
6、如果以字符串的某字符起始判断不存在子串,则接着判断下一个字符。
7、定义两个字符串数组,保存判断的字符串。
8、最后,调用自定义函数,用if语句判断是否为子串,如果结果不为空则输出是子串,如果结果为空则输出不是子串。
热心网友
时间:2023-10-21 06:39
indexOf()方法,查找某字符串在一个字符串内的位置,没有则返回-1
string aa="abcdef";
int a=aa.indexOf("bc");//a会等于1
int b=aa.indexOf("a");//b会等于0
int c=aa.indexOf("g");c会等于-1
所以你只要判断返回出来的int值是不是小于0就知道这个字符串里有没有包含指定的另一个字符串
热心网友
时间:2023-10-21 06:40
bool contain=longstr.Contains("aaa");
但是这个方法是System.Linq中的
所以VS2005以及以下版本是不支持的
热心网友
时间:2023-10-21 06:40
有就是indexOf()方法,查找子串在一个字符串内的起始位置,它有九个重载,你自己研究研究
也可以自己写的,下面是我自己改写了一个,是用那个著名的kmp算法查找的(这个方法查找的效率是最高的),关于这个算法你可以 百度一下,我就不多说了(学习学习总是好的,呵呵 )
下面的代码粘到窗体里就能用了....
int[] next = new int[20];//全局变量
private void get_next(string p)
{
int i = 1, j = 0; next[1] = 0;
while (i < p.Length)
{
if (j == 0 || p.Substring(i - 1, 1) == p.Substring(j - 1, 1))
{
++i; ++j;
if (p.Substring(i - 1, 1) != p.Substring(j - 1, 1))
next[i] = j;
else next[i] = next[j];
}
else j = next[j];
}
}
private bool b_kmp(string s, string p)//s是主串p是要查找的子串
{
get_next(p);
int i = 1, j = 1;
while (i <= s.Length && j <=p.Length)
{
if (j == 0 || s.Substring(i - 1, 1) == p.Substring(j - 1, 1)) { ++i; ++j; }
else j = next[j];
}
if (j > p.Length) return true;
else return false;
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(b_kmp (textBox1.Text,textBox2.Text).ToString());
}
热心网友
时间:2023-10-21 06:41
public bool IsInclude(string reStr, string seStr){
return reStr.indexOf(seStr) >= 0 ;
}