如何用C#取得某字符串在目标字符串中首次出现的位置索引?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用C#取得某字符串在目标字符串中首次出现的位置索引?相关的知识,希望对你有一定的参考价值。

例如某字符串形如:safdasfdasfdfwerwC语言safasdfasfVB语言dsadC语言asdfadfdsadC语言asdfad
我怎样才能知道第一个“C语言”在这个字符串里的起始位置的索引呢?
因为目标字符串中“C语言”的位置不固定,所以我想用程序查出来。

php里有:strpos: 寻找字符串中某字符最先出现处。
不知C#里有没有这样的函数?

直接用string类型变量的通用方法:indexOf。这个方法返回的数据类型是int,它有3个重载的方法,分别是indexOf(char c)检测c在字符串中首次出现的位置,indexOf(string str)检测字符串在母串中首次出现的位置,indexOf(string str,int start,int count)从start开始,检测count个字符,判断str在母串中的位置。 参考技术A string a="safdasfdasfdfwerwC语言safasdfasfVB语言dsadC语言asdfadfdsadC语言asdfad "
string b="C语言"

int cp=a.indexOf(b)

呵呵,记不清大小写了。本回答被提问者和网友采纳
参考技术B string str1="safdasfdasfdfwerwC语言safasdfasfVB语言dsadC语言asdfadfdsadC语言asdfad "
string str2="C语言"
int str1=a.indexOf(str2);
这个方法indexOf(String)
返回在该字符串中指定的子字符串第一次出现处的索引。 如果没找到则返回-1.
参考技术C string mystring = "dfjkdgjdjdsg";
Response.Write(mystring.IndexOf('f'));
页面返回结果为1

索引从0开始的!

如果你想这样的话:
d变成1,f变成2 ……

那么你可以试试看

string mystring = "dfjkdgjdjdsg";
Response.Write(mystring.IndexOf('f')+1);
共同学习!
参考技术D code11 = "safdasfdasfdfwerwC语言safasdfasfVB语言dsadC语言";
i = code11.IndexOf("C语言");
Console.WriteLine(i);

c中常用的字符串操作

c中常用的字符串操作

头文件:<string.h>

1.strchr()查找某字符在字符串中首次出现的位置

strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:

char * strchr (const char *str, int c);

【参数】str 为要查找的字符串,c 为要查找的字符。

strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。

注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。

【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。

返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。

提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用 strrchr()函数。

void teststrchr(char* str,char ch){
	char *pch;
	pch=strchr(str,ch);
	while (pch!=NULL)
	{
		printf ("found at %d\\n",pch-str+1);
		pch=strchr(pch+1,ch);
	}
}

2.strrchr()查找某字符在字符串中最后一次出现的位置

strrchr() 函数用于查找某字符在字符串中最后一次出现的位置,其原型为:
char * strrchr(const char *str, int c);

【参数】str 为要查找的字符串,c 为要查找的字符。

strrchr() 将会找出 str 字符串中最后一次出现的字符 c 的地址,然后将该地址返回。

注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。

【返回值】如果找到就返回该字符最后一次出现的位置,否则返回 NULL。

返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。

提示:如果希望查找某字符在字符串中第一次出现的位置,可以使用 strchr() 函数。

void teststrrchr(char* str, char ch){
	char *pch;
	pch = strrchr(str,ch);
	printf ("Last occurence of \'s\' found at %d \\n",pch-str+1);
}

3.strstr()返回字符串中首次出现子串的地址

strstr()函数用来检索子串在字符串中首次出现的位置,其原型为:
char *strstr( char *str, char * substr );

【参数说明】str为要检索的字符串,substr为要检索的子串。

【返回值】返回字符串str中第一次出现子串substr的地址;如果没有检索到子串,则返回NULL。

void teststrstr(char* str, const char* substr){
	char *pch;
	pch = strstr(str,substr);
	if(NULL != pch)
		strncpy(pch,"sample",6);
	puts(str);
}

4.strtok()字符串分割

定义函数:char * strtok(char *s, const char *delim);

函数说明:strtok()用来将字符串分割成一个个片段。参数s 指向欲分割的字符串,参数delim 则为分割字符串,当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为\\0 字符。在第一次调用时,strtok()必需给予参数s 字符串,往后的调用则将参数s 设置成NULL。每次调用成功则返回下一个分割后的字符串指针。

返回值:返回下一个分割后的字符串指针,如果已无从分割则返回NULL。

void teststrtok(char* str, const char* delim){
	char *pch;
	pch = strtok(str,delim);
	while(NULL != pch){
		printf("%s\\n",pch);
		pch = strtok(NULL,delim);
	}
}

测试完整代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void teststrchr(char* str,char ch){
	printf("----------------strchr------------------\\r\\n");
	char *pch;
	pch=strchr(str,ch);
	while (pch!=NULL)
	{
		printf ("found at %d\\n",pch-str+1);
		pch=strchr(pch+1,ch);
	}
}

void teststrrchr(char* str, char ch){
	printf("----------------strrchr-----------------\\r\\n");
	char *pch;
	pch = strrchr(str,ch);
	printf ("Last occurence of \'s\' found at %d \\n",pch-str+1);
}

void teststrstr(char* str, const char* substr){
	printf("----------------strrstr-----------------\\r\\n");
	char *pch;
	pch = strstr(str,substr);
	if(NULL != pch)
		strncpy(pch,"sample",6);
	puts(str);
}

void teststrtok(char* str, const char* delim){
	printf("----------------strrtok-----------------\\r\\n");
	char *pch;
	pch = strtok(str,delim);
	while(NULL != pch){
		printf("%s\\n",pch);
		pch = strtok(NULL,delim);
	}
}

int main(){
	char str[] = "-This is a simple string.";
	printf ("Looking for the \'s\' character in \\"%s\\"...\\n",str);
	teststrchr(str,\'s\');
	teststrrchr(str,\'s\');
	teststrstr(str,"simple");
	teststrtok(str," -.");
	system("pause");
	return 0;
}

运行结果:

以上是关于如何用C#取得某字符串在目标字符串中首次出现的位置索引?的主要内容,如果未能解决你的问题,请参考以下文章

如何用MYSQL函数删除字符串最后几个字符

0520

php mb_strpos() 函数详解

js字符串方法

返回指定的字符串首次出现的位置

strpos — 查找字符串首次出现的位置