字符串

字符串
字符串

使用字符串

(1)定义并初始化字符串

(2)使用字符串,对字符串进行一些处理

String s = "有志者事竟成";

在Java中,字符串被作为String类型对象来处理。

String类位于https://www.360docs.net/doc/509597805.html,ng包中,具有丰富的方法

计算字符串的长度

连接字符串

比较字符串

提取字符串

创建String对象的三种方法:

String s = "有志者事竟成";常量初始化创建一个对象

String s = new String(); 创建一个空字符串;构造方法初始化,创建两个对象(堆区和数据区,数据区存放数据,堆区存放引用对象)

String s = new String("有志者事竟成"); 创建一个字符串对象"有志者事竟成";

字符串的常用方法

1、计算字符串长度字符串标识符.length(); java的字符串长度返回的是字符的个数不是字节的个数

System.out.println("这个名字的长度是:\" " + name.length()+ "\" ");要想打印输出引号(”),必须在字符串中使用转义序列\”

2、equals()方法

使用equalsIgnoreCase()方法

结合toUpperCase()或toLowerCase()

3、字符串连接

方法1:使用“+”

方法2:使用String类的concat()方法s.concat(name)

4、字符串常用提取方法

public int indexOf(int ch) (字符)字符串从0开始

public int indexOf(String value)(字符串)搜索第一个出现的字符ch(或字符串value)//检查Java文件名

int index = https://www.360docs.net/doc/509597805.html,stIndexOf(".");

if ( index!=-1 && index!=0 && filename . substring (index+1, fileName.length()).equals("java")){

fileCorrect = true;

}

else {

System.out.println("文件名无效。");

}

//检查你的邮箱格式

if (email.indexOf('@') !=- 1 && email.indexOf('.') > email.indexOf('@')) {

emailCorrect = true;

}else{

System.out.println("Email无效。");

}

public int lastIndexOf(int ch)

public int lastIndexOf(String value) 搜索最后一个出现的字符ch(或字符串value)

public String substring(int index)提取从位置索引开始的字符串部分

public String substring(int beginindex, int endindex)beginindex: 字符串的位置从0开始算;

endindex: 字符串的位置从1开始算即字符串结束的下一个位置

public String trim() 返回一个前后不含任何空格的调用字符串的副本

5、字符串的分割方法:字符串数组=字符串名.split() 注意:字符串必须满足正则表达式。什么是正则表达式,用,号来分割js中涉及。

String str1="ab,cd,34";

//String str1="ab*cd*34";

String array[]=str1.split(",");

for(int i=0;i

System.out.println(array[i]);

}

6、其他类型转化为字符串:字符串名.valueOf()

String str="aaaa";

System.out.println(str+String.valueOf(true));

StringBuffer

1、StringBuffer:String增强版,位于https://www.360docs.net/doc/509597805.html,ng包中

与String 的区别:

a、String 是不可变长的字符串,而StringBuffer是变长的字符串(StringBuffer可变长的只存在堆区,不存放数据区)

b、当频繁的对字符串进行操作时,StringBuffer的效率要高于String。

String s = new String("a");

StringBuffer sb1 = new StringBuffer("a");

long begin = System.currentTimeMillis();

for (int i = 0; i < 10000; i++) {

s = s + i;

}

long end = System.currentTimeMillis();

System.out.println(end - begin);

begin = System.currentTimeMillis();

for (int i = 0; i < 10000; i++) {

sb1.append(String.valueOf(i));

}

end = System.currentTimeMillis();

System.out.println(end - begin);

2、创建StringBuffer类的对象

StringBuffer sb = new StringBuffer();

StringBuffer sb = new StringBuffer("aaa");等等

3、StringBuffer常用的方法

append insert indexOf subString等

sb.toString(); //转化为String类型

sb.append("**"); //在字符串后面追加字符串

sb.insert(开始位置,各种类型) //从规定的位置追加字符串

课后练习

练习题1:

对录入的信息进行有效验证

录入会员生日时,形式必须是“月/日”,例如“09/12”:录入的管理员密码必须在6到10位之间:允许用户重复录入,直到输入正确为止。

提示:

(1)检验生日有效性的方法

if(date.indexOf(‘/’)!=2){

//提示生日形式输入错误

}else{

//输出录入的会员生日

}

(2)检验录入的管理员密码的方法

if(password.length<6||password.length>10)

{

//提示密码不符合要求

}else{

//显示该会员的密码

}

public class Test1 {

public static void main(String[] args) {

java.util.Scanner input = new java.util.Scanner(System.in);

System.out.println("请输入会员生日<月/日>:");

String date = input.next();

if (date.indexOf('/') != 2) {

System.out.println("输入生日格式错误");

System.out.println("请输入会员生日<月/日>:");

date = input.next();

} else {

System.out.println("该会员的生日是" + date);

}

System.out.println("请输入管理员密码6-10位:");

String password = input.next();

if (password.length() < 6 || password.length() > 10) {

System.out.println("输入生日格式错误");

} else {

System.out.println(password);

}

}

}

练习题3:

编写一个字符浏览器,输入字符串以及需要查找的字符或字符串,浏览器自动定位所有出现该字符或字符串的位置。

提示:查找匹配的字符和查找匹配的字符串所使用的方法不同

public class Test3 {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

java.util.Scanner input = new java.util.Scanner(System.in); System.out.println("请输入一个字符串:");

String a1 = input.next();

System.out.println("请输入一个要查找的字符串:");

String a2 = input.next();

if(a1.indexOf(a2)!=-1){

System.out.println("要查找的字符串的位置是:" + (a1.indexOf(a2) + 1));

}

else{

System.out.println("没有要查找的字符");

}

}

}

练习题4:

输入5中水果的英文名称(例如:葡萄grape,桔子orange,香蕉banana,苹果apple,桃peach),编写一个程序,输出水果名称(按照在字典里出现的先后顺序输出)。

import java.util.Arrays;

public class Test4 {

public static void main(String[] args) {

String s[] = new String[5];

java.util.Scanner input = new java.util.Scanner(System.in);

int i;

for (i = 0; i < s.length; i++) {

System.out.println("请输入第" + i + "个水果名");

s[i] = input.next();

}

Arrays.sort(s);

System.out.println("这些水果在字典中的顺序");

for (int j = 0; j < s.length; j++) {

System.out.println(s[j]);

}

}

}

C语言32个字符

关键字就是已被C语言本身使用,不能作其它用途使用的字。例如关键字不能用作变量名、函数名等 由ANSI标准定义的C语言关键字共32个: auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static 根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类。 1 数据类型关键字 A.基本数据类型(5个) void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果 char:字符型类型数据,属于整型数据的一种 int:整型数据,通常为编译器指定的机器字长 float:单精度浮点型数据,属于浮点数据的一种 double:双精度浮点型数据,属于浮点数据的一种

B .类型修饰关键字(4个) short:修饰int,短整型数据,可省略被修饰的int。 long:修饰int,长整形数据,可省略被修饰的int。 signed:修饰整型数据,有符号数据类型 unsigned:修饰整型数据,无符号数据类型 C .复杂类型关键字(5个) struct:结构体声明 union:共用体声明 enum:枚举声明 typedef:声明类型别名 sizeof:得到特定类型或特定类型变量的大小 D .存储级别关键字(6个) auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配

Java字符串查找

Java中字符串中子串的查找共有四种方法,如下: 1、int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。 2、int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。 3、int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引。 4、int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。 indexof()用法说明 indexof() 返回String 对象内第一次出现子字符串的字符位置。 string.indexOf(subString[, startIndex]) 参数 string 必选项。String 对象或文字。 subString 必选项。 要在String 对象中查找的子字符串。 starIndex 可选项。 该整数值指出在String 对象内开始查找的索引。如果省略,则从字符串的开始处查找。 说明 indexOf 方法返回一个整数值,指出String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。 如果startindex 是负数,则startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。 从左向右执行查找。否则,该方法与lastIndexOf 相同。 示例 下面的示例说明了indexOf 方法的用法。 function IndexDemo(str2){ var str1 = "BABEBIBOBUBABEBIBOBU" var s = str1.indexOf(str2); return(s); }

字符串数字转换

1、字符串、数字转换。 atof(将字符串转换成浮点型数) atoi(将字符串转换成整型数) atol(将字符串转换成长整型数) strtod(将字符串转换成浮点数) strtol(将字符串转换成长整型数) strtoul(将字符串转换成无符号长整型数) toascii(将整型数转换成合法的ASCII 码字符) toupper(将小写字母转换成大写字母) tolower(将大写字母转换成小写字母) atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时 ('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。 返回值返回转换后的浮点型数。 附加说明 atof()与使用strtod(nptr,(char**)NULL)结果相同。 范例 /* 将字符串a 与字符串b转换成数字后相加*/ #include main() { char *a=”-100.23”; char *b=”200e-2”; float c; c=atof(a)+atof(b); printf(“c=%.2f\n”,c); }

执行 c=-98.23 atoi(将字符串转换成整型数) 相关函数 atof,atol,atrtod,strtol,strtoul 表头文件 #include 定义函数 int atoi(const char *nptr); 函数说明 atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时 ('\0')才结束转换,并将结果返回。 返回值返回转换后的整型数。 附加说明 atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。 范例 /* 将字符串a 与字符串b转换成数字后相加*/ #include mian() { char a[]=”-100”; char b[]=”456”; int c; c=atoi(a)+atoi(b); printf(c=%d\n”,c); } 执行 c=356 atol(将字符串转换成长整型数) 相关函数 atof,atoi,strtod,strtol,strtoul 表头文件 #include 定义函数 long atol(const char *nptr); 函数说明 atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时 ('\0')才结束转换,并将结果返回。 返回值返回转换后的长整型数。 附加说明 atol()与使用strtol(nptr,(char**)NULL,10);结果相同。 范例 /*将字符串a与字符串b转换成数字后相加*/

1602液晶字符显示

1.基本简介 LCD1602工业字符型液晶,能够同时显示16x02即32个字符。(16列2行) 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。2.管脚功能 1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VCC接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。 第7~14脚:D0~D7为8位双向数据端。 第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 ⑶特性 3.3V或5V工作电压,对比度可调 内含复位电路 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能 有80字节显示数据存储器DDRAM

C语言基本类型字符型(char)用法介绍

语言基本类型:字符型()用法介绍 .字符型()简介 字符型()用于储存字符(),如英文字母或标点.严格来说,其实也是整数类型(),因为类型储存地实际上是整数,而不是字符.计算机使用特定地整数编码来表示特定地字符.美国普遍使用地编码是(美国信息交换标准编码).例如:使用来代表大写字母,因此存储字母实际上存储地是整数.注意:许多大型机使用另一种编码——(扩充地二进制编码地十进制交换码);不同国家地计算机使用地编码可能完全不同. 地范围是到,故而位()就足以表示全部. 一般占用位内存单元,表示绰绰有余.许多系统都提供扩展(),并且所需空间仍然在位以内.注意,不同地系统提供地扩展地编码方式可能有所不同! 许多字符集超出了位所能表示地范围(例如汉字字符集),使用这种字符集作为基本字符集地系统中,可能是位地,甚至可能是位地.总之,保证占用空间地大小足以储存系统所用地基本字符集地编码. 语言定义一个字节()地位数为地位数,所以一个字节可能是位,也可能是位,而不仅仅限于位. . 声明字符型变量 字符型变量地声明方式和其它类型变量地声明方式一样: ; , ; 以上代码声明了三个字符型变量:、,和. . 字符常量与初始化 我们可以使用以下语句来初始化字符型变量: ''; 这个语句把地值初始化为地编码值.在这个语句中,'' 是字符常量. 语言中,使用单引号把字符引起来就构成字符常量.我们来看另外一个例子: ; * 声明一个字符型变量* ''; * 正确* ""; * 错!"" 是字符串字面量* 把字符用双引号引起来构成字符串字面量,所以第三个语句是错误地.我们会在后续地教程中讨论字符串,现在暂且把它放下. 因为字符实质上是以数字地形式存储地,所以我们可以直接使用数字来初始化字符变量,或者给字符变量赋值: ; * 不好地风格* 在中,地编码是,所以对于使用地系统来说,这个语句等同于'';.使用非地系统中,代表地不一定是,而有可能是其它任何字符,所以使用数字来初始化字符变量,或者给字符变量赋值是一种不好地风格,因为移植性太差了!但是,使用字符常量(例如'')来初始化字符变量,或者给字符变量赋值,字符变量得到地一定是我们所期待地字符地编码值.例如: ''; 无论在使用任何编码地系统中,都能够得到字符所对应地编码值.这是因为编译器会自动把'' 转化成所对应地编码值.因此,我们应该使用字符常量来初始化字符变量,或者给字符变量赋值;而不要用数字. 有趣地是,使用类型来处理字符常量,而不是类型.例如,在使用位地系统中,以下代码

字符串的替换

/* 字符串的替换. 将原字符串a中的b子串替换成c字符串,并存储到文件内 2013/6/24 */ #include #include #include #include usingnamespace std; // a 从文件中读入的原字符串 // b 要查找的字符串 // c 要替换b的字符串 void StrReplace(char a[], int fir, int last, int alen, char c[], int clen); int ReplaceStr(char a[], int alen, char b[], int blen, char c[], int clen); int main() { char a[250] = "000000"; char b[20] = "00"; char c[20] = "-"; cout <<"输入原字符串"<< endl; cin >> a;fflush(stdin); cout <<"输入要查找的字符串"<< endl; cin >> b;fflush(stdin); cout <<"输入替换用的字符串"<< endl; cin >> c;fflush(stdin); //求出三个字符串的长度 int alen, blen, clen; for (alen = 0; a[alen] != '\0'; alen++) { } for (blen = 0; b[blen] != '\0'; blen++) { } for (clen = 0; c[clen] != '\0'; clen++) { } //替换字符串 ReplaceStr(a, alen, b, blen, c, clen); cout<<"输出的字符串"<< endl << a << endl; //从文件中读入 char * addr = "E:\\SkyDrive\\Desktop\\source.txt"; fstream myfile(addr);

1602液晶字符显示

1602液晶字符显示

1.基本简介 LCD1602工业字符型液晶,能够同时显示16x02即32个字符。(16列2行) 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方

便地应用于市面上大部分的字符型液晶。 2.管脚功能 1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VCC接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。 第7~14脚:D0~D7为8位双向数据端。 第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 ⑶特性 3.3V或5V工作电压,对比度可调

C语言基本类型字符型(char)用法介绍

C语言基本类型:字符型(char)用法介绍 1.字符型(char)简介 字符型(char)用于储存字符(character),如英文字母或标点。严格来说,char 其实也是整数类型(integer type),因为char 类型储存的实际上是整数,而不是字符。计算机使用特定的整数编码来表示特定的字符。美国普遍使用的编码是ASCII(American Standard Code for Information Interchange 美国信息交换标准编码)。例如:ASCII 使用65 来代表大写字母A,因此存储字母A 实际上存储的是整数65。注意:许多IBM大型机使用另一种编码——EBCDIC(Extended Binary-Coded Decimal Interchange Code 扩充的二进制编码的十进制交换码);不同国家的计算机使用的编码可能完全不同。 ASCII 的范围是0 到127,故而7 位(bit)就足以表示全部ASCII。char 一般占用8 位内存单元,表示ASCII绰绰有余。许多系统都提供扩展ASCII(Extended ASCII),并且所需空间仍然在8 位以内。注意,不同的系统提供的扩展ASCII 的编码方式可能有所不同! 许多字符集超出了8 位所能表示的范围(例如汉字字符集),使用这种字符集作为基本字符集的系统中,char 可能是16 位的,甚至可能是32 位的。总之,C 保证char 占用空间的大小足以储存系统所用的基本字符集的编码。C 语言定义一个字节(byte)的位数为char 的位数,所以一个字节可能是16 位,也可能是32 位,而不仅仅限于8 位。 2. 声明字符型变量 字符型变量的声明方式和其它类型变量的声明方式一样: char good; char better, best; 以上代码声明了三个字符型变量:good、better,和best。 3. 字符常量与初始化 我们可以使用以下语句来初始化字符型变量: char ch = 'A'; 这个语句把ch 的值初始化为 A 的编码值。在这个语句中,'A' 是字符常量。C 语言中,使用单引号把字符引起来就构成字符常量。我们来看另外一个例子: char fail; /* 声明一个字符型变量*/ fail = 'F'; /* 正确*/ fail = "F"; /* 错!"F" 是字符串字面量*/

1602字符型液晶显示器

1602字符型液晶显示器 在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。 1602字符型LCD简介: 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图10-53: 图10-53 1602字符型液晶显示器实物图 1602LCD的基本参数及引脚功能: 1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图10-54所示:

图10-55 读操作时序 图10-56 写操作时序 1602LCD的RAM地址映射及标准字库表: 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图10-57是1602的内部显示地址。

图10-57 1602LCD内部显示地址 例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。 在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B (41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A” 图10-58 字符代码与图形对应图

C语言32个字符的定义

C语言32个字符的定义 2009-03-01 21:49 auto :声明自动变量一般不使用 double :声明双精度变量或函数 int:声明整型变量或函数 struct:声明结构体变量或函数 break:跳出当前循环 else :条件语句否定分支(与 if 连用) long :声明长整型变量或函数 switch :用于开关语句 case:开关语句分支 enum :声明枚举类型 register:声明积存器变量 typedef:用以给数据类型取别名(当然还有其他作用) char :声明字符型变量或函数 extern:声明变量是在其他文件正声明(也可以看做是引用变量) return :子程序返回语句(可以带参数,也看不带参数) union:声明联合数据类型 const :声明只读变量 float:声明浮点型变量或函数 short :声明短整型变量或函数 unsigned:声明无符号类型变量或函数 continue:结束当前循环,开始下一轮循环 for:一种循环语句(可意会不可言传) signed:生命有符号类型变量或函数 void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)default:开关语句中的“其他”分支 goto:无条件跳转语句 sizeof:计算数据类型长度 volatile:说明变量在程序执行中可被隐含地改变 do :循环语句的循环体 while :循环语句的循环条件 static :声明静态变量 if:条件语句

转义字符的定义 SqlServer中Sql语句的转义字符的使用(Escape charator) WHERE ProductName LIKE '[2005]%' 如果这样,他就找第一个字符是2,0,5之中的任何一个,而实际上不是这样的 这个时候就应该用转义,ESCAPE 关键字 WHERE ProductName LIKE '/[2005/]%' ESCAPE '/' /后边的都不是通配符了,而是一个字符。 like '%50/%%' ESCAPE '/' % _ [] [^] NOT LIKE '415%' 二、VBScript 转义字符(Escape Character) 目前我所知道的VBScript需要的转义字符就只有一个“"”(西文双引号)。在字符串中如果需要输入“"”,会和程序中的“"”混淆。因此我们在字符串内遇到要用“"”时一般用“""”(两个西文双引号)或“'”(一个西文单引号)替换。^AF 我们的第一个VBScript做的是一个E-Mail地址,我们现在用HTML语法让它带有链接。 一、VBScript 常量(Constant)

字符串比较问题

字符串比较问题 一、问题描述 对于长度相同的2 个字符串A和B,其距离定义为相应位置字符距离之和。2 个非空格字符的距离是它们的ASCII码之差的绝对值。空格与空格的距离为0;空格与其它字符的距离为一定值k。在一般情况下,字符串A和B的长度不一定相同。字符串A的扩展是在A中插入若干空格字符所产生的字符串。在字符串A 和B 的所有长度相同的扩展中,有一对距离最小的扩展,该距离称为字符串A和B的扩展距离。对于给定的字符串A和B,试设计一个算法,计算其扩展距离。 二、算法设计 解答: 设字符串A和B的字串A[1...i]和B[1...j]的扩展距离是val(i, j); 依题意,字符串A和B有三种可能的情况: 1)A串最后一个字符是空格,B串最后一个字符是字母,则val(i, j) = val(i-1, j) + k; 2)A串最后一个字符时字母,B串最后一个字符时空格,则val(i, j) = val(i, j-1) + k; 3)A串和B串最后一个字符均是字母,则val(i, j) = val(i-1, j-1) + dist(a i , b i ); 由上可知,val(i, j)具有最优子结构性质,且满足如下递推式: val(i, j) = min{ val(i-1, j) + k,val(i, j) + k,val(i-1, j-1) + dist(a i , b i ) } (使用动态规划算法,自底向上的计算各个子问题并利用每次计算的结果,避免重复运算,从而降低算法复杂度。)

从动态规划递归式可知,算法的时间复杂度为O(mn),m和n分别是字符串A和B的长度。 代码如下: #include #include #define MAX 100000//标识最大的可能整数 int val[300][300]; std::string stra;//字符串A std::string strb;//字符串B int k;//定值k //返回字符a与b的ASCII码的差的绝对值 int dist(char a,char b) { return abs(a-b); } int comp()

B字符串

一、字符串类型: 1、在C 中不能直接声明字符串变量。 2、字符串就是:(1)字符型数组;(2)数组的最后一个字符是?\0?。 二、字串常量:用””来定界 如:”Hello”。要注意:…A?是一个字符,而“A”是两个字符。 三、字符串变量的声明: 1、char s[5]={…a?,?b?,?c?,?d?,?\0?}; 2、char s[]={…a?,?b?,?c?,?d?,?\0?}; 3、char s[5]={…a?,?b?,?c? }; 4、char s[5]= “abc”; 5、char s[]=”abc”; 6、char *s=”abc”; 四、字符串的运算: char a[10],*p; p="abc"; (“abc”是字符串型常量,本身就是地址) a="abc"; (a是一个数组,是指针常量。) a[0]=?a?;a[1]=?b?;……a[9]=?\0?; 五、字符串的输入和输出。 1、用scanf 和printf 说明符是%s [代码90] char a[10]; scanf(“%s”,a); (a不用&a。) printf(“%s”,a); 2、gets 和puts [代码91] char a[10]; gets(a); puts(a); 3、char *p; scanf(“%s”,p); 4、当字符串输入时,是一个一个字符读取的,所以如果多输入的 话也会接收,但会访问到数组空间以外的内存,输出时也要等 读到‘\0’才结束。所以 char a[10],*p; p=a; scanf(“%s”,p); 六、字符串数组: char a[3][10]={"王红","女","汉"}; 七、字符串处理函数:包含在“string.h”中 1、strcpy(s1,s2); 把s2的内容复制到s1中。 2、strcat(s1,s2 ); 把s2的内容连接到s1 后。

液晶字符显示

液晶字符显示

————————————————————————————————作者:————————————————————————————————日期:

1.基本简介 LCD1602工业字符型液晶,能够同时显示16x02即32个字符。(16列2行) 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。 2.管脚功能 1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VCC接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。 第7~14脚:D0~D7为8位双向数据端。 第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 ⑶特性 3.3V或5V工作电压,对比度可调 内含复位电路 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能 有80字节显示数据存储器DDRAM

第二章VFP的数据表达式一、数据类型1.字符型字符型(Character,C

第二章 VFP的数据表达式 一、数据类型 1.字符型 字符型(Character,C型)通常用于储存文本信息,由字母、汉字、空格、数字、符号和标点等字符组成,宽度不能超过254字节。若超过254字节,则请改用备注型。例如:“abc”,“计算机”,“123”,“ID18”等。 2.货币型 货币型(Currency,Y型)这种类型是专为货币数据设计的数据类型,表示方法是在数字前加一个$符号。最多只能保留到小数点后4位,超过四位则会自动四舍五入:少于四位则会自动补零。占8个字节的空间。 例如:money=$980.45678。 3.数值型 数值型(Numeric,N型)用于表示数量,由数字0~9、+或-,以及小数点组成。数值型数据占8个字节,长度为1~20个字节。 VFP中文版采用十进制和十六进制两种格式。例如:98.66,0xff(前面加0x表示十六进制)。数值型数据可采用科学计数法,如“3E2”代表“3×102”,“10e-2”代表“10×10-2”。 4.整型 整型(Integer,I型)用于存储不含小数部分的数值。是一种较小的数据类型,整数型占有内存空间4个字节。 5.浮点型 浮点型(Float,F型)等价于数值型类型。VFP出于兼容性的考虑设置了这个数据类型。 6.日期型日期型(Date,D型)用于存储日期数据。由年、月、日三部分组成,存储格式为“YYYYMMDD”。表示范围为{^0001/01/01}到{^9999/12/31},即公元0001年1月1日到公元9999年12月31日。其中“^”符号表示此日期格式严格遵循YMD(year,month,day)的格式,使用日期型数据时应用大括号{}括起来。日期型数据存储长度为8个字节。例如:mydate={^2006/10/12}表示日期是2006年10月12日,而不是2006年12月10日。 7.时间日期型 时间日期型(Date Time,T型)用于记录日期时间的数据。由日期数据加具体时间构成,存储格式为“YYYYMMDDHHMMSS”。其中时间部分的取值为:00:00:00a到11:59:59p之间。例如:mydatetime={^2006/12/14 10:30:05p} 。 8.双精度型 双精度型(Double,B型)常用来记录高精度的数据。 9.逻辑型

正则表达式和有限自动机

第二部分正规语言和有限自动机 语言往往是无限集,但描述的方法往往是有限的,一种方法是描述如何通过字符串操作由简单的字符串产生整个语言,或者描述如何通过集合操作由简单语言产生复杂语言。另一种方法是描述识别字符串是否属于某个语言的机制,也就是描述一个算法过程。 本书考察的最简单的语言类是正规语言,正规语言能够通过应用有限次的某个标准操作从一元语言产生。正规语言能够被有限自动机识别,有限自动机是空间严格受限的简单机器。 在第二部分,我们还考察正规语言的另外一些特点:1)导出将一种语言的描述翻译成另一种语言的描述的算法;2)使用形式化方法描述语言;3)正规语言在实际中的应用。 3 正则表达式和有限自动机 3.1 正则语言和正则表达式 注意:regular language和regular expression有时也翻译成正规语言和正规表达式。 正则语言可以从非常简单的表达式得到,初始语言的字符串为空或单字母,仅使用合并、连接和K leene连接运算,因此正则语言可用一个清楚的表达式描述,通常用小括号()代替大括号{},+代替?,称为正则表达式。 下面是一些定义在字母表{0, 1}上的正则表达式,通过这些例子,能够感受到书写正则表达式的一些规律。 语言相应的正则表达式 {Λ} Λ {0} 0 {001}或{0}{0}{1} 001 {0, 1}或{0}?{1} 0+1 {0, 10}或{0}?{10} 0+10 {1, Λ}{001} (1+Λ)001 {110}*{0, 1} (110)*(0+1) {1}*{10} 1*10 {10, 111, 11010}* (10+111+11010)* {0, 10}*({11}*?{001, Λ}) (0+10)*((11)*+001+Λ) 我们认为正则表达式表示的是相应语言的“最典型的字符串”,比如,1*10表示一个字符串,它以10结束,前面可以有任意多个数目的1。 我们在前面将正则语言描述成:在最简单的语言上仅仅使用三种运算合并、连接、Kleene 连接所得到的语言。这种描述预示了正则语言的递归定义(参见2.4节)。下面递归定义不仅定义了语言,而且定义了正则表达式。 定义3.1 字母表∑上正则语言类R,及其相应的正则表达式定义如下:

各种C语言字符串操作,str....

字符串操作 strchr 原型:char *strchr(const char* _Str,int _Val) char *strchr(char* _Str,int _Ch) 头文件:#include 功能:查找字符串s中首次出现字符c的位置 说明:返回首次出现c的位置的指针,返回的地址是被查找字符串指针开始的第一个与Val相同字符的指针,如果s中不存在c则返回NULL。 返回值:成功则返回要查找字符第一次出现的位置,失败返回NULL strcmp 原型:extern int strcmp(const char *s1,const char *s2); C/C++函数,比较两个字符串 设这两个字符串为str1,str2, 若str1==str2,则返回零; 若str1>str2,则返回正数; 若str1

对于设置了LC_COLLATE语言环境的情况下,则根据LC_COLLATE设置的语言排序方式进行比较。例如:汉字,根据拼音进行比较。 strcpy 原型:char *strcpy(char *dest, const char *src); 头文件:#include 和#include 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 strcspn 原型:size_t strcspn(const char *s, const char *reject); 头文件:#include 功能:顺序在字符串s1中搜寻与s2中字符的第一个相同字符,包括结束符NULL,返回这个字符在S1中第一次出现的位置。 说明:(返回字符串s1中第一个在s2中出现的字符在s1中的下标值,亦即在s1中出现而s2中没有出现的子串的长度。) strdup 原型:char *strdup(const char *s); 功能: 将串拷贝到新建的位置处 strdup()在内部调用了malloc()为变量分配内存,不需要使用返回的字符串时,需要用free()释放相应的内存空间,否则会造成内存泄漏。 返回一个指针,指向为复制字符串分配的空间;如果分配空间失败,则返回NULL值。

字符液晶显示原理实例详解

1602详细资料和实例 1602字符液晶在实际的产品中运用的也比较多了,前几天留意了一下,发现宿舍门前的自动售水机就是采用的1602液晶进行显示的。而且对于单片机的学习而言,掌握1602的用法是每一个学习者必然要经历的过程。在此,我将使用1602过程中遇到的问题以及感受记录下来,希望能够给初学者带来一点指导,少走一点弯路。 所谓1602是指显示的内容为16*2,即可以显示两行,每行16个字符。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。 1602液晶的正面(绿色背光,黑色字体) 1602液晶背面(绿色背光,黑色字体)

另一种1602液晶模块,显示屏是蓝色背光白色字体 字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,引脚定义如下表所示:

HD44780内置了DDRAM、CGROM和CGRAM。 DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表: 也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码(指A的字模代码,0x20~0x7F为标准的ASCII码,通过这个代码,在CGROM中查找到相应的字符显示)就行了。但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下: DDRAM地址与显示位置的对应关系。 (事实上我们往DDRAM里的00H地址处送一个数据,譬如0x31(数字1的代码,见字模关系对照表)并不能显示1出来。这是一个令初学者很容易出错的地方,原因就是如果你要想在DDRAM的00H地址处显示数据,则必须将00H加上80H,即80H,若要在DDRAM的01H处显示数据,则必须将01H加上80H即81H。依次类推。大家看一下控制指令的的8条:DDRAM地址的设定,即可以明白是怎么样的一回事了),1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形(无汉字),如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H)(其实是1个地址),显示时模块把地址41H 中的点阵字符图形显示出来,我们就能看到字母“A”。

判断字符串a和b是否相等

第五章练习题 一、选择题 1、判断字符串a和b是否相等,应当使用() A、if(a==b) B、if(a=b) C、if(strcpy(a,b)) D、if(strcmp(a,b)) 2、以下正确的定义语句是() A、int a[1][4]={1,2,3,4,5}; B、float x[3][]={{1},{2},{3}}; C、long b[2][3]={{1},{1,2},{1,2,3}}; D、double y[][3]={0}; 3、以下各组选项中,均能正确定义二维实型数组a的选项是() A、float a[3][4]; float a[ ][4]; float a[3][ ]={{1},{0}}; B、float a(3,4); float a[3][4]; float a[ ][ ]={{0},{0}}; C、float a[3][4]; static float a[ ][4]={{0},{0}}; auto float a[ ][4]={{0},{0},{0}}; D、float a[3][4]; float a[3][ ]; float a[ ][4]; 4、下面程序的运行结果是() #include "stdio.h" main() { char str[]="SSSWLIA",c; int k; for(k=2;(c=str[k]!='\0');k++) { switch(c) {case 'I':++k;break; case 'L':continue; default:putchar(c);continue; } putchar('*'); } } A、SSW* B、SW* C、SW*A D、SW 5、下面程序段是输出两个字符串中对应相等的字符。横线处应填入() char x[]="programming"; char y[]="Fortran"; int i=0; while(x[i]!='\0'&&y[i]!='\0') if(x[i]==y[i]) printf("%c",《1》);

1602字符型液晶显示篇

1602字符型液晶显示篇 《电子制作》2008年1月站长原创,如需引用请注明出处 在日常生活中,我们对液晶显示器并不陌生?液晶显示模块已作为很多电子产品的通过器件,如在计算器?万用表?电子表及很多家用电子产品中都可以看到,显示的主要是数字?专用符号和图形?在单片机的人机交流界面中,一般的输出方式有以下几种:发光管?LED数码管?液晶显示器?发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用? 在单片机系统中应用晶液显示器作为输出器件有以下几个优点: 显示质量高 由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点?因此,液晶显示器画质高且不会闪烁? 数字式接口 液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便? 体积小?重量轻 液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多? 功耗低 相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多? 1 液晶显示简介 ①液晶显示原理 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形?液晶显示器具有厚度薄?适用于大规模集成电路直接驱动?易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑?数字摄像机?PDA移动通信工具等众多领域? ②液晶显示器的分类 液晶显示的分类方法有很多种,通常可按其显示方式分为段式?字符式?点阵式等?除了黑白显示外,液晶显示器还有多灰度有彩色显示等?如果根据驱动方式来分,可以分为静态驱动(Static)?单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种? ③液晶显示器各种图形的显示原理: 线段的显示 点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应?例如屏的第一行的亮暗由RAM区的000H—00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线?这就是LCD显示的基本原理? 字符的显示 用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮?这样一来就组成某个字符?但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光

相关文档
最新文档