(1)输入一个c语言 字符串存入数组,并存入字符数组a中。(2)输入任何字符,在字符数组中查找该字符的位置。

C#如果判断一个字符串中是否包含另一个字符串数组或列表中的任何一个元素 | 图享网
C#如果判断一个字符串中是否包含另一个字符串数组或列表中的任何一个元素
郑重申明:本文未经许可,禁止任何形式转载
前段时间写了一篇《》的文章,那篇文章中的判断只是对单个字符串的精确匹配判断,但对于本文标题中所描述的情形并不适用,如现在有以下需求:
var str="This is a test string.";
var excludeWordList=new List&string&{"is","test","string"};
我们要判断str字符串中里有包含excludeWordList中的任何一个元素,应该怎么处理呢?
首先要说的是这种判断的做法有很多种:
方法一:FOREACH循环
/// &summary&
/// foreach循环(非LINQ表达式)
/// &/summary&
/// &param name="str"&&/param&
/// &param name="excludeWordList"&&/param&
/// &returns&&/returns&
static bool CheckMethod_1(string str, ICollection&string& excludeWordList)
if (str.Trim().Length &= 0 || excludeWordList == null || excludeWordList.Count &= 0)
var contain =
foreach (var el in excludeWordList)
if (str.Contains(el))
方法二:LINQ表达式
/// &summary&
/// LINQ表达式
/// &/summary&
/// &param name="str"&&/param&
/// &param name="excludeWordList"&&/param&
/// &returns&&/returns&
static bool CheckMethod_2(string str, ICollection&string& excludeWordList = null)
if (str.Trim().Length &= 0 || excludeWordList == null || excludeWordList.Count &= 0)
return excludeWordList.Any(s =& str.IndexOf(s, StringComparison.OrdinalIgnoreCase) &= 0);
这两种方法都可以完成判断工作,但需要注意的是,第一种方法中使用的string.Contains(string)方法是区分大小写的,即你把excludeWordList写成: excludeWordList = new List&string& { "Is", "Test", "String" };是检测不到元素的,当然,第一种方法中用string.IndexOf(string,StringComparison)这个重载方法也是完全可以的,在这里我是为了举例说明Contains和Any的区别。
下面提供本例的完整实例代码,仅供参考:
using System.Collections.G
using System.L
namespace Test
class Program
static void Main(string[] args)
const string str = "This is a test string.";
var excludeWordList = new List&string& { "is", "test", "string" };
Console.WriteLine("字符串{0}{1}检测集合中的元素", str, CheckMethod_1(str, excludeWordList) ? "包含" : "不包含");
Console.WriteLine("字符串{0}{1}检测集合中的元素", str, CheckMethod_2(str, excludeWordList) ? "包含" : "不包含");
Console.ReadKey();
/// &summary&
/// foreach循环(非LINQ表达式)
/// &/summary&
/// &param name="str"&&/param&
/// &param name="excludeWordList"&&/param&
/// &returns&&/returns&
static bool CheckMethod_1(string str, ICollection&string& excludeWordList)
if (str.Trim().Length &= 0 || excludeWordList == null || excludeWordList.Count &= 0)
var contain =
foreach (var el in excludeWordList)
if (str.Contains(el))
/// &summary&
/// LINQ表达式
/// &/summary&
/// &param name="str"&&/param&
/// &param name="excludeWordList"&&/param&
/// &returns&&/returns&
static bool CheckMethod_2(string str, ICollection&string& excludeWordList = null)
if (str.Trim().Length &= 0 || excludeWordList == null || excludeWordList.Count &= 0)
return excludeWordList.Any(s =& str.IndexOf(s, StringComparison.OrdinalIgnoreCase) &= 0);
本文就写这两种实现方法,每个人都有自己的处理方式,仁者见仁。如有问题,欢迎留言反馈。
阅读了该文章的人还浏览了...
本文永久链接: >>
分享扩散:
电子邮箱(必填)输入一个字符串&将前 n个字符复制到另一个数组&并输出
取字符串前四位何必用正则表达式呢str.SubString( 0, 4 )正则表达式是用来匹配字符串用的
#include&&stdio.h&#include&&stdlib.h&int&main(){&&&&char&c;&&&&scanf(&%c&,&nbs
幺yāo ㄧㄠˉ◎ 小,排行最末的:叔.妹.◎ 数目一(a.称呼电话号码等;b.色子和骨牌中的一点):喝(hè )六.◎ 姓.
这样的题目好无聊!这辈子都用不到!
#include&&stdio.h&#include&&stdlib.h&#include&&string.h&&int&main(int&argc,&char&*argv[]){&&
激活要复制的线条所在的视图,复制它,再激活目标位置的视图,粘贴.若不激活目标位置视图,默认粘贴在线条原先所在位置上.查看原帖
声明两个字符串 一个字符串用来保存最大的字串 另一个用来保存 当前读到的字串 两个进行对比 差不多应该就可以了 再问: 不懂... 再答: 这个就是给你的思路a 你用循环接着比较前面读到的字符跟后面的字符是否相同 如果相同 就都放到一个字符串中 接着如果遇到不同的字符 就跟你保存的最大字符串进行比较 如果大于最大字符串
下面这句有错:for(i=0;i
&& 方案一:CLEARACCEPT "请输入字串:" TO ab=0c=0d=0e=0f=0n = LEN(a)FOR i = 1 TO n\x05x=ASC(SUBSTR(a,i,1))\x05DO CASE\x05\x05CASE (x >= 65 AND x == 97 AND x =
int main(){ char str1[50],str2[50]; printf("请输入字符串:|n"); gets(str1); for(int i=0;str1[1]='\0';i++) { if(str1[i]>='a'&&str1[i]='A'&&str1[i] 再问: 再问: 运行结果是这样怎么办 再答
首先你没有按照题目的要求,自定义函数的参数要有三个,你m哪去了;还有就是整数第9 10 行错了,要改成这样 char *p1=str1; char *p2=str2;最后就是else这里,改这样else {copychar(str1,str2,m);printf("%s",str2);}花括号不能省,不然如果不满足条件
string str=TextBox1.Text.toString().Trim(); //获得得字符串string temp2 = ""; //临时存放for(int i = str.Length-1;i>=0;i--) //找到这个字符串最后一个索引{temp2 = temp2+str.Substring(i,1)
#include &cstdio&bool isPalindrome(char inStr[]){ char* pl = inS char* pr = inS while (*pr != 0) pr++; pr--; //pr指向最后一个字符 while
“日”是长日期格式,显示的是文本,而实际存储的是表示日期序列的数字,所以在正常的日期格式下用文本提取函数是不能提取的,可以试试如下公式:=LEFT(TEXT(A2,"e年mm月dd日"),8) 再问: 非常感谢!我试了下,先生的方法和第三条方法都可得到我要的结果,再请教一下,如果要防止今后出现这种结
#include #include"string.h"int count (char *s,char c);void main(){char c,s[20];printf("请输入一串字符:\n");scanf("%s",s);printf("请输入要统计的字符:\n");getchar();scanf("
看一下满足你要求不
//在你的基础上改了下,测试正确!#include #include void main(){int e=1,flag=0,j=0,digit=0,k=0,f,h=0,a[10],i,n=0;char b[40];cin>>b;for(i=0;i='0')&&(b[i] 再问: 朋友。。你这不是在我基础上改的。
五更分两年年年称心 一夜连两岁岁岁如意 横批:恭贺新春
indexof(";") 函数返回";"的下标索引值,然后挨个截取!做个计数器计数,每截取到一个”;“计数器加1,只到剩余字符串中不在含有“;”;计数器的值就是”;“ 的个数! 再问: 这要写一个存储过程吧,我直接用length(str)-length(replace(str,';',''))这个表达式就能得到了,不过
#includeint main(){int letter=0,num=0,space=0,other=0,i;char put[1000000];gets(put);for(i=0;i='a' && put[i]='A' && put[i]='0' && put[i]C语言编程 编写程序,从键盘输入一个字符串放在字符数组a中,用选择法将a中的有效字符按降序排列_百度知道
C语言编程 编写程序,从键盘输入一个字符串放在字符数组a中,用选择法将a中的有效字符按降序排列
我有更好的答案
main(){int&&for(j=0.com/zhidao/wh%3D450%2C600/sign=cdee0e833d7adab43d851347bee49f2a/ccb912fd0b4b55c8fdfc.jpg" />#include&s[200],c;&gets(s);&for(n=0;s[n].com/zhidao/wh%3D600%2C800/sign=467a21ec9c52fb6281a42/ccb912fd0b4b55c8fdfc.jpg" esrc="http://f.hiphotos://f.hiphotos.baidu.com/zhidao/pic/item/ccb912fd0b4b55c8fdfc,n.h&int&i++)&s[j+1])&&&&&{c=s[j];s[j]=s[j+1];s[j+1]=c.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http://f.hiphotos.n-1;char&nbsp.&j&n-1-i;j++)&&&&&if(s[j]&stdio<a href="n++);&for(i=0;i&&i,j
采纳率:83%
来自团队:
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博客分类:
awk内置字符串函数gsub(r,s) 在整个$0中用s替代r;gsub(r,s,t) 在整个t中用s替代r
gsub函数有点类似于sed查找和替换。它允许替换一个字符串或字符为另一个字符串或字符,并以正则表达式的形式执行。第一个函数作用于记录$0,第二个gsub函数允许指定目标,然而,如果未指定目标,缺省为$0。index(s,t):函数返回目标字符串s中查询字符串t的首位置。length(s) :返回s长度match(s,r): 测试s是否包含匹配r的字符串split(s,a,fs) 在fs上将s分成序列asprint (fmt,exp) :函数类似于printf函数(以后涉及),返回基本输出格式fmt的结果字符串exp。sub(r,s) 用$0中最左边最长的子串代替ssubstr(s,p) 返回字符串s中从p开始的后缀部分substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分。match函数测试字符串s是否包含一个正则表达式r定义的匹配。split使用域分隔符fs将字符串s划分为指定序列a。1.gsub要在整个记录中替换一个字符串为另一个,使用正则表达式格式, /目标模式/,替换模式/。例如改变学生序号:
$cat grade.txtM.Tans 5/99 48311 Green 8 40 44J.Lulu 06/99 48317 green 9 24 26P.Bunny 02/99 48 Yellow 12 35 28J.Troll 07/99 4842 Brown-3 12 26 26L.Tansl 05/99
4712 Brown-2 12 30 28# cd /usr/sam# awk 'gsub(/){print $0}' grade.txtJ.Troll 07/99 4899 Brown-3 12 26 262. index查询字符串s中t出现的第一位置。必须用双引号将字符串括起来。例如返回目标字符串Bunny中ny出现的第一位置,即字符个数。# awk 'BEGIN {print index("Bunny","ny")}' grade.txt43. length返回所需字符串长度,例如检验字符串J.Troll返回名字及其长度,即人名构成的字符个数# awk '$1=="J.Troll" {print length($1)" "$1}' grade.txt7 J.Troll还有一种方法,这里字符串加双引号。# awk 'BEGIN{print length("A FEW GOOD MEN")}'144. matchmatch测试目标字符串是否包含查找字符的一部分。可以对查找部分使用正则表达式,返回值为成功出现的字符排列数。如果未找到,返回0,第一个例子在ANCD中查找d。因其不存在,所以返回0。第二个例子在ANCD中查找D。因其存在,所以返回ANCD中D出现的首位置字符数。第三个例子在学生J.Lulu中查找u。# awk 'BEGIN{print match("ANCD",/d/)}'0# awk 'BEGIN{print match("ANCD",/D/)}'4# awk '$1=="J.Lulu" {print match($1,"u")}' grade.txt45. split使用split返回字符串数组元素个数。工作方式如下:如果有一字符串,包含一指定分隔符-,例如AD2-KP9-JU2-LP-1,将之划分成一个数组。使用split,指定分隔符及数组名。此例中,命令格式为("AD2-KP9-JU2-LP-1",parts_array,"-"),split然后返回数组下标数,这里结果为4。# awk 'BEGIN {print split("123-456-789",pats_array,"-")}'3还有一个例子使用不同的分隔符。# awk 'BEGIN {print split("123#456#789",myarray,"#")}'
3这个例子中,split返回数组myarray的下标数。数组myarray取值如下:myarray[1]=123myarray[2]=456myarray[3]=7896. sub使用sub发现并替换模式的第一次出现位置。字符串STR包含'poped popo pill',执行下列sub命令sub(/op/,"OP",STR)。模式op第一次出现时,进行替换操作,返回结果如下:'pOPed pope pill'。如:学生J.Troll的记录有两个值一样,"目前级别分"与"最高级别分"。只改变第一个为29,第二个仍为26不动,操作命令为sub(/26/,"29",$0),只替换第一个出现26的位置。注意J.Troll记录需存在。# awk '$1=="J.Troll" sub(/26/,"29",$0)' grade.txtM.Tans 5/99 48311 Green 8 40 44J.Lulu 06/99 48317 green 9 24 29P.Bunny 02/99 48 Yellow 12 35 28J.Troll 07/99 4842 Brown-3 12 29 26L.Tansl 05/99 4712 Brown-2 12 30 287. substrsubstr是一个很有用的函数。它按照起始位置及长度返回字符串的一部分。例子如下:# awk '$1=="L.Tansl" {print substr($1,1,3)}' grade.txtL.T上面例子中,指定在域1的第一个字符开始,返回其前面3个字符。如果给定长度值远大于字符串长度, awk将从起始位置返回所有字符,要抽取LTansl-ey的姓,只需从第3个字符开始返回长度为7。可以输入长度99,awk返回结果相同。# awk '$1=="L.Tansl" {print substr($1,1,99)}' grade.txtL.Tanslsubstr的另一种形式是返回字符串后缀或指定位置后面字符。这里需要给出指定字符串及其返回字串的起始位置。例如,从文本文件中抽取姓氏,需操作域1,并从第三个字符开始:# awk '{print substr($1,3)}' grade.txtTansLuluBunnyTrollTansl还有一个例子,在BEGIN部分定义字符串,在END部分返回从第t个字符开始抽取的子串。# awk 'BEGIN{STR="A FEW GOOD MEN"}END{print substr(STR,7)}' grade.txtGOOD MEN8. 从shell中向awk传入字符串awk脚本大多只有一行,其中很少是字符串表示的。大多要求在一行内完成awk脚本,这一点通过将变量传入awk命令行会变得很容易。现就其基本原理讲述一些例子。使用管道将字符串stand-by传入awk,返回其长度。# echo "Stand-by" | awk '{print length($0)}'8设置文件名为一变量,管道输出到awk,返回不带扩展名的文件名。# STR="mydoc.txt"# echo $STR|awk '{print substr($STR,1,5)}'mydoc设置文件名为一变量,管道输出到awk,只返回其扩展名。# STR="mydoc.txt"# echo $STR|awk '{print substr($STR,7)}'txt
字符串屏蔽序列使用字符串或正则表达式时,有时需要在输出中加入一新行或查询一元字符。打印一新行时(新行为字符\n),给出其屏蔽序列,以不失其特殊含义,用法为在字符串前加入反斜线。例如使用\n强迫打印一新行。如果使用正则表达式,查询花括号({ }),在字符前加反斜线,如/\{/,将在awk中失掉其特殊含义。awk中使用的屏蔽序列\b 退格键\t tab键\f 走纸换页\ddd 八进制值\n 新行\c 任意其他特殊字符,例如\ \为反斜线符号\r 回车键使用上述符号,打印May Day,中间夹tab键,后跟两个新行,再打印May Day,但这次使用八进制数104、141、171分别代表D、a、y。# awk 'BEGIN {print"\nMay\tDay\n\nMay\t\104\141\171"}'May
Day注意,\104为D的八进制ASCII码,\141为a的八进制ASCII码,等等。awk输出函数printf目前为止,所有例子的输出都是直接到屏幕,除了tab键以外没有任何格式。awk提供函数printf,拥有几种不同的格式化输出功能。例如按列输出、左对齐或右对齐方式。每一种printf函数(格式控制字符)都以一个%符号开始,以一个决定转换的字符结束.转换包含三种修饰符。printf函数基本语法是printf([格式控制符],参数),格式控制字符通常在引号里。printf修饰符-
左对齐Width
域的步长,用0表示0步长.prec
最大字符串长度,或小数点右边的位数awk printf格式%c
ASCII字符%d
浮点数,科学记数法%f
浮点数,例如(1 2 3 . 4 4)%g
awk决定使用哪种浮点数转换e或者f%o
八进制数%s
十六进制数1. 字符转换观察ASCII码中65的等价值。管道输出65到awk。printf进行ASCII码字符转换。这里也加入换行,因为缺省情况下printf不做换行动作。$echo "65" | awk '{printf "%c\n",$0}'A按同样方式使用awk得到同样结果。$awk 'BEGIN{printf "%c\n",65}'A所有的字符转换都是一样的,下面的例子表示进行浮点数转换后'999'的输出结果。整数传入后被加了六个小数点。$awk 'BEGIN{printf "%f\n",999}'999.0000002. 格式化输出打印所有的学生名字和序列号,要求名字左对齐, 15个字符长度,后跟序列号。注意\n换行符放在最后一个指示符后面。输出将自动分成两列。# awk '{printf "%-15s %s\n",$1,$3}' grade.txtM.Tans
48311J.Lulu
48317P.Bunny
4842L.Tansl
4712加入一些文本注释帮助理解报文含义。可在正文前嵌入头信息。注意这里使用print加入头信息。如果愿意,也可使用printf。# awk 'BEGIN{print "Name\t\tS.Number"}{printf "%-15s %s\n",$1,$3}' grade.txtName
S.NumberM.Tans
48311J.Lulu
48317P.Bunny
4842L.Tansl
4712打印输出“What is your name?" 利用getline函数从终端接收输入,并传送给name变量,直到用户输入回车为止,如果第一域匹配employees2中的记录。打印“Found ",name变量,"on line" ,行号。打印“See ya, ”,name变量以上是传入name变量的值存在于employees2中的情况$ awk 'BEGIN{printf "What is your name?" ;\getline name & "/dev/tty"}\$1 ~ name {print "Found " name " on line ",NR "."}\END{print "See ya, " name "."}' employees2What is your name?TomFound Tom on line 1.See ya, Tom.不存在于employees2中的情况$ awk 'BEGIN{printf "What is your name?" ;\getline name & "/dev/tty"}\$1 ~ name {print "Found " name " on line ",NR "."}\END{print "See ya, " name "."}' employees2What is your name?czmSee ya, czm.
参考至:《UNIX(R) Shells by Example Fourth Edition》By Ellie Quigley
《LINUX与UNIX SHELL编程指南》
http://blog.sina.com.cn/s/blog_45b28bfb0100o0fs.html
本文为原创文章,转载请注明出处、作者
如有错误,欢迎指正
浏览 36385
浏览: 3058938 次
来自: 厦门
xuexilee!!!
谢谢非常有用那
写的很详细
学习了,学习了
大写的赞..
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'编程题 试卷2_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
编程题 试卷2
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
还剩11页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 字符串存入数组 的文章

 

随机推荐