实验5字符串的操作

合集下载

第6章 字符串处理

第6章 字符串处理
其中,不可见字符用来控制字符串的格式化输出,在浏览器上不可见 ,只能看见输出的结果。
字符串的界定符号有以下3种。 单引号(')。 双引号(")。 界定符(<<<)。
6.2 字符串操作
6.2.1 获取字符串长度
字符串长度函数包括strlen()函数和mb_strlen()函数。 1. strlen()函数 函数的语法格式如下: int strlen(string str) 函数功能:返回字符串str的字符长度。 【实例6-1】使用strlen()函数计算字符串的长度。
3),"<br/>"; echo "右起第5个到结尾:",substr($str,-5),"<br/>";
?>
2. mb_substr()函数
函数的语法格式如下:
string mb_substr(string str,int start,int length,encoding)
函数功能:同substr()函数大致相同。 函 数 的 参 数 同 substr() 大 致 相 同 , 其 中 encoding 表 示 编 码 的 方 式 , 一 般 取 gb2312、gbk或utf-8。 【实例6-4】使用函数mb_substr()截取字符串。
【实例6-2】使用函数mb_strlen()计算字符串的长度。
<?php $str="你好world"; echo "中文gb2312编码方式:",mb_strlen($str,"gb2312"),"<br/>"; echo "utf-8编码方式:",mb_strlen($str,"utf-8"),"<br/>"; ?>

5.字符串--索引--详解

5.字符串--索引--详解

5.字符串--索引--详解字符串-索引-详解⼀、字符串索引1.索引格式:变量名[头标:下标:步长] 步长不写默认为1索引从左往右是以0开始,从右往左则以-1开始例:从左往右输出变量中得索引值name = 'yang'# 索引 0123print(name[0])结果:y从右往左输出变量中得索引值name = 'yang'# 索引 -4-3-2-1print(name[-1])结果:g2.切⽚例:输出变量中头标⾄下标这个区间的索引值,但不包含终⽌索引的值name = 'yang'# 索引 0123print(name[0:3])结果:yan3.步长步长为每次⾛的步,(有点像跨索引取值)例:name = 'helloword'#索引 012345678#从头标开始每次⾛两步的话,也就是取02468这些索引的值print(name [0:9:2])结果:hlood⼆、字符串详解1.⼤⼩写转换命令格式:换⼤写:变量名.upper()换⼩写:变量名.lower()换⼤写例:a=yanga1=a.upper()print(a1)结果:YANG换⼩写例:a=YANGa1=a.lower()print(a)结果:yang举例:让登录的验证码不区分⼤⼩写y_z_m = 'o98k' #设置验证码y_z_m_input = input("请输⼊验证码(O98k)") #⽤户输⼊验证码new_y_z_m_input = y_z_m_input.lower() #将⽤户输⼊的字符串换成⼩写if y_z_m == new_y_z_m_input:user = input('请输⼊账号:')pwd = input('请输⼊密码:')if user == 'yang' and pwd == '8520':print('登陆成功!')else:print('登录失败')else:print('验证码错误!')2.判断以什么开头命令格式:变量名.startswith('要判断的字符串')变量名.startswith('要判断的字符串',上标,下标)例:name = 'yang'new_name = name.startswith('y') #判断是否为y开头,写⼊逻辑值if new_name: #此处new_name的值为Trueprint('是以y开头')# 判断这是不是字符串是不是以a开头的例:name = 'yang' #可⽤索引指定区间new_name = name.startswith('n',2,5) #2和5分别为起始索引和终⽌索引if new_name:print('是以n开头')# 我们可以指定从哪个位置开始哪个位置结束3.判断以什么结尾命令格式:变量名.endswith('要判断的字符串')变量名.endswith('要判断的字符串',上标,下标)例:name = 'yang'new_name = name.endswith('g')if new_name:print('是以g结尾')# 判断这是不是字符串是不是以x结尾的name = 'yang'new_name = name.endswith('g',2,5)if new_name:print('是以g结尾')# 判断这是不是字符串是不是以x结尾的4.统计出现的次数命令格式:变量名.count('要判断的字符串')例:name = 'yanglang'new_name = name.count('a')print(new_name)# 统计name这个字符串中a出现的次数5.字符串替换命令格式:变量名.replace('被换','要换',换的个数)例:name = 'yanglang'new_name = name.replace('a','b',1) #把name中的a换成b,其中1是替换的次数(替换的个数)print(new_name)结果:ybnglang# 替换字符串中的内容以外我们可以指定要替换的次数例:name = 'yanglang'new_name = name.count('a') #统计a出现的次数(出现的个数)nw_name = name.replace('a','b',new_name) #把所有的a替换成b,print(nw_name)6.去除的头尾两端的空格,换⾏符,制表符命令格式:变量名.strip()例:name = ' yanglang ' # 注意!此处字符串两头是加了空格的new_name = name.strip() # 默认去除的头尾两端的空格,换⾏符,制表符也可以⾃⼰指定print(new_name)# 去除头尾俩遍的空格和换⾏符7.分割字符串命令格式:变量名.split(‘分割点’)变量名.split(‘分割点’,maxsplit=分割次数)例:name = 'yanglang' # 通过n将字符串name进⾏切割,将n作为切割点new_name = name.split("n") # 默认以空格,换⾏符,制表符分隔print(new_name)结果:['ya','gla','g'] # 切割后的内容是⼀个列表,把字符串切割成列表# print(type(变量名))可以输出变量类型例:name = 'yanglang'new_name = name.split("n",maxsplit=1) # 此处的1是切割次数(或者说是切割⼏个x)print(new_name)结果:['ya','glang']8.字符串格式化例:name = 'yanglang{}{}' #这⾥的{}是占位符new_name = name.format('说的对','是的') #可以按照顺序去填充,也可以按照索引去填充,也可以按照关键字填充print(new_name)9.is系列判断是否为⼗进制的数字命令格式:变量名.isdecimal()例:name = 'yanglang'new_name = name.isdecimal() #此处输⼊值为Falseprint(new_name)# 判断是不是⼗进制的数字,返回结果是布尔值判断是否为数字、字母和中⽂命令格式:变量名.isalnum()例:name = 'yanglang'new_name = name.isalnum()print(new_name)# 判断是不是数字和字母以及中⽂,返回结果是布尔值判断是否为纯字母和中⽂命令格式:变量名.isalpha()例:name = 'yanglang'new_name = name.isalpha()print(new_name)# 判断是不是纯字母和汉字,返回的是布尔值10.获取字符串长度命令格式:len(变量名)例:name='yanglang' #字符串name1=['a','b',[1,2,3]] #列表print(len(name)) #结果为 8print(len(name1)) #结果为 311.使⽤while循环打印单个元素例:name = "Meet"count = 0while count < len(name):print(name[count]) #将变量值作为索引,输出此索引的元素count = count + 112.for 循环例:name = "Meet"for i in name:print(i)for i in "Meet":print(i)for循环, for是关键字 i是⼀个变量后边的name是要被循环的内容,他会把这个name指向的字符串⾥的每个元素打印出来for循环是可以循环的数据结构:字符串(str)列表(list)元祖(tuple)字典(dict)集合(set)唯独不能进⾏循环的就是整型(int)和布尔值(bool) #因为这两种数据结构都是单个值【补充】1.字符串⾸字母⼤写命令格式:字符串.capitalize()例:a='asd'a=a.capitalize()print(a) #输出结果为 Asd。

第5章 字符串操作

第5章 字符串操作

5.4.4 截取字符串
为保持页面整洁,开发时常对一些超长的文本进行部分显
示 <?php $text="祝全国程序开发人员在编程之路上一帆风顺二龙腾 飞三羊开泰四季平安五福临门六六大顺七星高照八方来财 九九同心十全十美百事可乐千事顺心万事吉祥PHP编程一 级棒"; if(strlen($text)>30){ echo substr($text,0,30)."…"; } else{ echo $text; }
5.4.1 去除字符串首尾空格和特殊字符
2、ltrim()函数 ltrim()函数用于去除字符串左边的空格或者指定字符串。
string ltrim(string str[,string charlist]); <?php $str=" (:@_@ 重庆第二师范学院 计算机科学二班 @_@:) "; echo ltrim($str); echo "<br>"; echo ltrim($str,"(:@_@ @_@:)" ); ?>
5.3 字符串的连接符
半角句号“.”是字符串连接符,可以把两个或两个以上
的字符连接成一个字符串。 <?php $name = "重庆第二师范学院:"; $url = ""; echo $name.$url.".cn"; ?> <?php $name = "重庆第二师范学院:"; $url = ""; echo "$name.$"; ?>
strcasecmp()函数不区分字符大小写
注: strcmp()函数和strcasecmp()函数在用户登录时,应用广泛。

北京理工大学汇编实验五实验报告概要

北京理工大学汇编实验五实验报告概要

本科实验报告实验名称:子程序设计实验实验五子程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言子程序设计方法;3.熟悉利用汇编语言子程序参数传递方法;4.熟悉汇编语言字符串处理基本指令的使用方法;5.掌握利用汇编语言实现字符串的输入输出程序设计方法;6.掌握数制转换程序实现方法。

二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识A)子程序知识要点:1、掌握子程序的定义语句;过程名PROC [near/far] 过程体RET过程名ENDP2.子程序结构形式一个完整的子程序一般应包含下列内容:1. )子程序的说明部分在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法.说明时,应含如下内容:.子程序名:命名时要名中见意..子程序的功能:说明子程序完成的任务;.子程序入口参数:说明子程序运行所需参数及存放位置;.子程序出口参数:说明子程序运行结果的参数及存放位置;.子程序所占用的寄存器和工作单元;.子程序调用示例;2、)掌握子程序的调用与返回在汇编语言中,子程序的调用用CALL,返回用RET指令来完成。

.段内调用与返回:调用子程序指令与子程序同在一个段内。

因此只修改IP;.段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。

3.)子程序的现场保护与恢复保护现场:在子程序设计时,CPU内部寄存器内容的保护和恢复。

一般利用堆栈实现现场保护和恢复的格式:过程名PROC[NEAR/FAR]PUSH AXPUSH BX..PUSH DX...POP DX...POP AXRET过程名ENDP4.子程序的参数传递方法1.寄存器传递参数这种方式是最基本的参数传递方式。

2.存储器单元传(变量)递参数这种方法是在主程序调用子程序前,将入口参数存放到约定的存储单元中;子程序运行时到约定存储位置读取参数;子程序执行结束后将结果也放在约定存储单元中。

实验5---语法分析器(自下而上):LR(1)分析法

实验5---语法分析器(自下而上):LR(1)分析法

实验5---语法分析器(自下而上):LR(1)分析法一、实验目的构造LR(1)分析程序,利用它进行语法分析,判断给出的符号串是否为该文法识别的句子,了解LR(K)分析方法是严格的从左向右扫描,和自底向上的语法分析方法。

二、实验内容程序输入/输出示例(以下仅供参考):对下列文法,用LR(1)分析法对任意输入的符号串进行分析:(1)E->E+T(2)E->E—T(3)T->T*F(4)T->T/F(5)F-> (E)(6)F->i输出的格式如下:(1)LR(1)分析程序,编制人:姓名,学号,班级(2)输入一个以#结束的符号串(包括+—*/()i#):在此位置输入符号串(3)输出过程如下:3.对学有余力的同学,测试用的表达式事先放在文本文件中,一行存放一个表达式,同时以分号分割。

同时将预期的输出结果写在另一个文本文件中,以便和输出进行对照。

三、实验方法1.实验采用C++程序语言进行设计,文法写入程序中,用户可以自定义输入语句;2.实验开发工具为DEV C++。

四、实验步骤1.定义LR(1)分析法实验设计思想及算法①若ACTION[sm , ai] = s则将s移进状态栈,并把输入符号加入符号栈,则三元式变成为:(s0s1…sm s , #X1X2…Xm ai , ai+1…an#);②若ACTION[sm , ai] = rj则将第j个产生式A->β进行归约。

此时三元式变为(s0s1…sm-r s , #X1X2…Xm-rA , aiai+1…an#);③若ACTION[sm , ai]为“接收”,则三元式不再变化,变化过程终止,宣布分析成功;④若ACTION[sm , ai]为“报错”,则三元式的变化过程终止,报告错误。

2.定义语法构造的代码,与主代码分离,写为头文件LR.h。

3.编写主程序利用上文描述算法实现本实验要求。

五、实验结果1. 实验文法为程序既定的文法,写在头文件LR.h中,运行程序,用户可以自由输入测试语句。

第5章 串

第5章 串

【例5-8】子串定位 例 IndexStr ("abcdebda","bc")=2 " "" " IndexStr ("abcdebda","ba")= 0 " "" " 6. 串插入 InsStr (s,t,i) 操作条件: , 存在 操作条件:串s,t存在 操作结果:将串 插入到串 的第i个字符前 的串值发 插入到串s 个字符前, 操作结果:将串t插入到串 的第 个字符前,s的串值发 生改变. 生改变. 7. 串删除 DelStr(s,i,len) 操作条件: 存在 操作条件:串s存在 操作结果:删除串 中第i个字符起长度为 的子串, 个字符起长度为len的子串 操作结果:删除串s 中第 个字符起长度为 的子串,s 的串值改变. 的串值改变.
5-1-2 串的输入与输出 1.字符串的输入 . 语言中, 在C语言中,字符串的输入有两种方法: 语言中 字符串的输入有两种方法: (1)使用 )使用scanf () 函数 使用scanf () 函数时,输入格式中要设置"%s", 函数时,输入格式中要设置" ", 使用 再加上字符数组名称. 再加上字符数组名称. 【例5 - 2 】 char str[10]; printf(" printf("Input your str: "); scanf("%s" scanf("%s",str); 使用 使用scanf ()方式输入时,字符串中不能含有空格. 方式输入时, 方式输入时 字符串中不能含有空格. 在C++中还可以用输入流对象cin . C++中还可以用输入流对象 中还可以用输入流对象cin

实验五 数组实验

实验五  数组实验

实验五数组的使用一实验目的要求1 掌握数组的概念和使用方法。

2 掌握数组初始化的方法。

3学会字符数组和字符串的应用。

4 学会用数组名作函数的参数。

二有关概念1 只有静态数组和外部数组才能初始化。

2 引用数组时,对下标是否越界不作检查。

如定义int a[5];在引用时出现a[5],不给出错信息,而是引a[4]下面一个单元的值。

3 字符串放在字符数组中,一个字符串以‘/o’结束,有一些字符串函数如strcpy,strcmp,strlen等可以方便一进行字符串运算。

4 如有如下定义:char *str=“I love china”;表示 str是一个字符型指针变量,它的值是一个字符数据的地址。

不要认为str是字符串变量,在其中存放一个字串“I love china”。

5 用数组名作函数实参时,传到形参的是数组的首地址。

三实验内容和步骤1 定义三个数组int a[5];int b[2][2];char c[10];(1)分别在函数体外和函数体内对它们进行初始化,然后输出它们的值。

(2)在程序中再加一语句,输出a[5],b[2][2] ,分析结果。

(3)对C数组改为用赋值语句给各元素赋初值:c[0] ~ c[9]各元素分别为:…I‟, …‟, …a‟, …m‟, …‟, …b‟, …o‟, …y‟。

然后用printf(“%s”,c)输出字符串,分析结果。

参考程序如下:(1)main(){ int i,x,y;static int a[5]={1,2,3,4,5};static int b[3][2]={{3,4},{6,7},{9,5}}static char c[10]={ …i‟, …l‟, …p‟, …q‟, …k‟, …s‟, …d‟, …e‟, …a‟};for(i=0;i<5;i++)printf( “%5d”,a[i]);for(x=0;x<3;x++)for(y=0;y<2;y++)printf(“%5d”,b[x][y]);for(i=0;i<10;i++)printf(“%3c”,c[i]);}(2)结果无此值,在上面程序中要输出a数组第5个元素,和b数组的第3行第2例元素,应加此程序行:Printf(“%d”,a[4]);Printf(“%d”,b[2][1]);2 有一数组,内放10个整数,要求找出最小的数和它的下标。

C语言上机实验5-12

C语言上机实验5-12

17.5实验5循环结构程序设计1.实验目的(1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。

(2)掌握在程序设计中循环的方法实现一些常用的算法(如穷举、迭代、递推等)。

(3)进一步学习调试程序。

2.实验内容编程并上机调试运行(1)输入一行字符、分别统计出其中的英文字母、空格、数字和其他字符的个数(本题是教材第5章第4题)在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。

(2)输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。

例如,153是一个水仙花数,因为153=1³+5³+3³(本题是教材第五章第8题)。

(3)猴子吃桃问题。

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。

第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃,只剩一个桃子了。

求第一天共摘了多少桃子(本题是教材第五章第12题)。

再得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。

请修改程序并运行,检查结果是否正确。

(4)用牛顿迭代法求方程2X³=4x²+3x-6=0在1.5附近的根(本题是教材第五章第13题,学过高等数学的读者可选做此题)。

再得到正确结果后,请修改程序所设的X初始值由1.5改为100,1000,1000,再运行,观察结果,分析不同的x初值对结果有什么影响,为什么?修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。

3.预习内容预习教材第5章。

17.6实验6数组1.实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。

(2)掌握字符数组和字符串函数的使用。

(3)掌握与数组有关的算法(特别是排序算法)。

2.实验内容编程序并上机调试运行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
升序排序并输出*/
import java.util.Scanner;
public class StudentSort {
public static void main(String[] args) {
StudentSort st = new StudentSort();
st.ห้องสมุดไป่ตู้utsort();
}
public void cutsort() {
10.ch.checkup(str);
11.sc.close();
12.}
13.
14.public void checkup(String str) {
15.String patternStr1 = "([0-9]|[a-zA-Z]){8,16}";
16.String patternStr2 = ".*\\d.*\\d.*";
21.} else {
22.System.out.println(" Invalid password ");
23.}
24.}
25.}
26.String patternStr2 = ".*\\d.*\\d.*";
27.boolean result1 = Pattern.matches(patternStr1, str);
}
for (int k = 0; k < st.length; k++)
System.out.println(st[k]);
}
}
class Student {
public String name;
private String id;
private String date;
public String getName() {
String str1 = stArr[1];
String str2 = stArr[3];
String str3 = stArr[4];
st[i].setName(str1);
st[i].setId(str2);
st[i].setDate(str3);
}
}
sc.close();
for (int j = 0; j < st.length; j++)
任超,任超,,20092212239,2011-11-4 9:06:56
杨阳,杨阳,,20092212302,2011-11-4 9:06:54
都英健,都英健,,20092212229,2011-11-4 9:07:04
要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到
Student类中作为类的私有属性。创建一个Student类型的对象数组,对学号进行
return name;
}
public void setName(String name) {
= name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDate() {
33.}
34.}
35.}
要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到Student类中作为类的私有属性。创建一个Student类型的对象数组,对学号进行升序排序并输出
/*从键盘输入多行文本,格式如下:
学生端名称,姓名,班级名称,学生ID,注册时间
姜涛,姜涛,,20092212232,2011-11-4 9:06:56
28.boolean result2 = Pattern.matches(patternStr2, str);
29.if (result1 && result2) {
30.System.out.println(" valid password");
31.} else {
32.System.out.println(" Invalid password ");
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生的数量:");
int num = sc.nextInt();
sc.nextLine();
Student[] st = new Student[num];
for (int i = 0; i < num; i++) {
st[i] = new Student();
System.out.println("请输入第" + (i + 1) + "个学生的信息:");
String str = sc.nextLine();
String[] stArr = str.split("[,|\\s]");
for (int a = 0; a < stArr.length; a++) {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String toString(){
return name+id+date;
}
}
17.boolean result1 = Pattern.matches(patternStr1, str);
18.boolean result2 = Pattern.matches(patternStr2, str);
19.if (result1 && result2) {
20.System.out.println(" valid password");
for (int k = 0; k < st.length; k++)
if (st[j].getId().compareTo(st[k].getId()) < 0) {
Student stu = new Student();
stu = st[j];
st[j] = st[k];
st[k] = stu;
5.public static void main(String[] args) {
6.System.out.println("请输入密码:");
7.Scanner sc = new Scanner(System.in);
8.String str = sc.next();
9.Check ch = new Check();
博客网站设定了校验密码的规则,编写方法检验一个字符串是否是合法的密码。规则如下:密码长度在8-16之间密码只能包含字母和数字密码必须存在至少2个数字如果用户输入的密码符合
2.import java.util.Scanner;
3.import java.util.regex.Pattern;
4.public class Check {
相关文档
最新文档