字符串的概念
字符串是由字符组成的。例如,“ HELLO”是一个字符串,就像“} 75GRH $ 0”(尽管这对我们没有任何意义)。字符串由引号“”分隔。
”CASIO” //包含字符'C''A''S''I''O'的字符串
CASIO //不带引号,计算器将其解释为变量C,A,S,I和O的乘积
”7851” //另一个包含字符'7''8''5''1'的字符串
7851 //对于计算器,它只是一个值:7851
始终记住,字符串由引号分隔,否则计算器会将其解释为计算。
字符串具有自己的变量:Str,其后跟1到20之间的数字。变量Str可以在[VARS]-> [F6]-> [F5]中找到。它的工作原理与普通变量相同。
//与变量一样,我们使用→为字符串分配一个“值”
“ MY STRING”→Str 1
//要求用户输入一个字符串(在这里:Str 5)
?→Str 5
//字符串Str 15等于字符串Str 4
Str 4→Str 15
//显示内容
Locate 1,2,Str 1
重要的是要记住,一个字符串限制为255个字符。
确切地说,某些字符被编码为2位以上。这些是特殊字符,程序中使用的大多数字符都是1位编码的。因此,当字符串长度少于255个字符时出现错误时,请不要感到惊讶。仅仅因为2位字符占据两倍的位置,因此减少了字符串中最大字符数。
字符串的基本操作
1、返回字符串的长度(StrLen)
要知道字符串的长度(以字符为单位),您可以使用StrLen(<“您的字符串”>)函数。
StrLen(”HELLO”) // StrLen返回5
StrLen(Str 1) //取决于Str 1的内容
如果出现“内存错误”,则您的字符串不包含任何字符。这是一种初始化Str的方法:
””→Str 1
注意:字符串中的字符以1位或2位编码的事实不会影响StrLen()的结果。它返回字符数。
2、更改大小写(StrUpr和StrLwr)
更改大小写意味着将大写字母更改为小写字母,反之亦然。就我个人而言,我从未使用过这个功能。
StrUpr()返回大写,StrLwr()返回小写。
StrUpr(“ hello”) //返回“ HELLO”
StrLwr(“ HELLO”) //返回“ hello”
StrUpr(“ Hello”) //返回“ HELLO”
StrLwr(“ hEllO”) //返回“ hello”
3、比较两个字符串(StrCmp)
、此函数返回3个可能的值:
- 如果Str 1 = Str 2,则StrCmp()返回0
- 如果Str 1> Str 2,则StrCmp()返回1
- 如果Str 1 <Str 2,则StrCmp()返回-1
记住有关StrCmp()的两个重要点:
- 确切地说,StrCmp()确定两个字符串是否不同,这就是为什么如果两个字符串相同则返回0的原因。
- 同样,StrCmp()不比较字符串的长度,比较的是两个字符串第一个不相同的字符。
StrCmp(”A”,”B”) //返回-1,因为'A'<'B'
StrCmp(”C”,”B”) //返回1,因为'C'>'B'
StrCmp(”TEST-X”,”TEST-Y”) //返回-1,因为'X'<'Y'
StrCmp("Salut","Bonjour") //返回1,因为'S'>'B'
许多人认为StrCmp()比较字符串的长度,这是错误的,请参照最后一个示例。
4、连接字符串(StrJoin或+)
要合并字符串以形成一个新字符串。可以不需要使用函数而优选使用加号“ +”。此外,与StrJoin()不同,您可以使用“ +”同时连接两个以上的字符串。
我坚持认为,StrJoin()和“ +”产生完全相同的结果。由于上述原因,我强烈建议第二种选择。
”What is your name?”→Str 1
StrJoin(”HELLO”,Str 1) //可以使用,但不建议
”Hello”+ ”Str 1”+”Welcome to Basic Casio class!” // 推荐使用
字符串的高级操作
前面看到的功能非常有限,现在我们将增加难度,并且一旦掌握了它们,你将更好地了解它们的功能。
1、提取字符
有三个函数可从字符串中提取字符:
- StrMid():从指定位置
- StrLeft():从左侧开始(在字符串的开始)
- StrRight():从右边开始(在字符串的末尾)
StrMid()允许从给定位置检索一定数量的字符。它以这种方式使用:StrMid(<“字符串”>,<要提取的第一个字符的位置>,<要提取的字符数>),第一个字符的位置为1。
”Hi young programmer !”→ Str 5
StrMid(Str 5,1,2 //返回”Hi”
StrMid(Str 5,4,16 //返回”young programmer”
StrMid(Str 5,4,18 //返回”young programmer !”
如果未指定最后一个参数,StrMid()提取所有字符,直到字符串末尾。
在某些情况下,你需要获取字符串的前n个字符或后n个字符。
StrLeft(Str 5,2 // 返回”Hi”
StrRight(Str 5,12 //返回”programmer !”
2、移动字符
一些预定义的函数可以让你在字符串中移动字符。
线性位移:StrShift()
StrShift()向左或向右移动n个字符。如果n为正,则向左移动;如果为负,则向右移动。
- StrShift(“ ABCDE”,2) //返回“ CDE(2个空格)”
- StrShift(“ ABCDE”,-2) //返回“(2个空格)ABC”
字符串的长度在StrShift()之前和之后保持相同,然后将丢失的字符用空格替代。
旋转位移:StrRotate()
使用StrRotate()可以将字符放置在字符串的另一侧。我将用一些示例来说明此功能。
StrRotate()从左向右(如果参数n为正)或从右向左(如果参数n为负)循环移动字符。
StrRotate(”SALUT”,1) //返回 ”ALUTS”
StrRotate(”SALUT”, -1) //返回 ”TSALU”
//这是一个有趣的小代码。将其输入到计算器中(文本应在屏幕上滚动):
"PLANETE CASIO(末尾有7个空格)"→Str 1
Do
Locate 2,4,Str 1
StrRotate(Str 1,1)→Str 1
For 1→B To 250
Next
LpWhile Getkey≠47
3、查找字符
StrSrc()函数搜索字符串中的第一个匹配项。用法为StrSrc(<“ 字符串”>,<“ 需查找的字符”>)。
StrSrc(”SALUT”,”A”) //返回 2
StrSrc(”PROGRAMMATION”,”A”) //返回 6
StrSrc(”PROGRAMMATION”,”S”) //返回 0 因为 ”PROGRAMMATION”中不存在”S”
//你还可以搜索一个字符串:
StrSrc(”PROGRAMMATION”,”ION”) //返回 11
请注意:StrSrc()可选第3个参数,它表明StrSrc()函数应从哪个字符开始搜索。如果未指定,则搜索从字符串的开头开始。
但是,StrSrc()有一个主要缺陷:它仅返回第一次出现的位置。如果你希望所有出现的内容,例如“ TOTO”中的“ O”,则必须自己编写搜索功能。此外,作为练习,你可以编写一个小的程序用来填补StrSrc()的这一空白。
3、转换字符串
从字符串到变量
要在数学计算中使用字符串的内容是很简单的,我们使用函数Exp(<“ 字符串”>)。
假设您的Str 1字符串包含“ 256897”。在这种情况下,Exp(Str 1)返回256897作为值。如果您的字符串包含字母或符号,则Exp()将它们转换为值并执行计算。
”256897”→Str 1
Exp(Str 1) //返回256897
Exp(Str 1)+ 100000 //返回356897
10→A
”A + 5”→Str 1
Exp(Str 1) //返回15(因为10 + 5)
从变量到字符串
现在相反。这次,我们使用该函数...实际上,它不存在。不要惊慌,已经有人做了这个程序。该程序称为Var2Str,可以很好地完成工作。你可以在本网页上找到所有必要的说明。
关于转换的部分已经完成,让我们解决字符串的一个有趣且间接的方面:测试列表的存在。
测试列表的存在
使用字符串,我们可以知道列表是否存在。返回主菜单并启动LIST应用程序(即表格应用程序)。列表1的标题为“ Sub”,行数为0,可通过以下方式命名列表:
”CASIO”→List 1[0 //列表1被命名为”CASIO”
Str 1→List 1 [0
请注意,(重新)命名现有列表不会更改其值。
这个技巧非常好,如果你命名一个空列表,则第一个框的自动值为0。
请尝试以下示例:
ClrList 26 //确保列表26为空
”CASIO”-> List 26 [0 //我们将列表26命名为”CASIO”
List 26 [1 //返回0
结论
字符串使用得当,可以使您的程序更具功能!它们速度非常快,在游戏中的应用是无限的。例如,某些程序员不是将数据存储在数组中,而是存储在字符串中。在许多情况下,可以大大提高程序性能。
下面是对本课程中所见功能的概述:
- Str:字符串的“变量”,
- StrLen:返回字符串的长度(以字符数为单位),
- StrUp和StrLwr:更改大小写,
- StrCmp:比较两个字符串,
- StrJoin或+:将两个或多个字符串连接起来,
- StrMid,StrLeft和StrRight:提取字符,
- StrShift和StrRotate:在字符串中移动字符,
- StrSrc:在字符串中搜索字符或字符串。