Silk字符串

字符串用双引号 " 括起来,和C类似,但Silk没有单独的字符类型,一个字符就是长度为1的字符串。
字符串赋值:
s="abc";

字符串格式化:
用内置和c类似的sprintf函数,支持%d,%s,%f,分别格式化整数,字符串,浮点数。
支持以下格式符号:
     %c     格式化字符及其ASCII码
      %s     格式化字符串
      %d     格式化整数
      %o     格式化八进制数
      %x     格式化十六进制数
      %X     格式化十六进制数(大写)
      %f     格式化浮点数字,可指定小数点后的精度

s=sprintf("%d,%s,%f\r\n",100,"abc",100.23);


同时可以使用反斜杠 \ 转义特殊字符,支持转义字符如下:
\\    反斜杠符号
\"    双引号
\a    响铃
\b    退格
\n    换行
\r    回车
\v    纵向制表符
\t    横向制表符

 字符串支持直接相加:
s="I am "+" Hero";


 判断字符串是否为空有几种方法:
if(s=="")
    print("empty string");
if(s.size()==0)
    print("empty string");
if(!s)
    print("empty string"); 

注意:空字符串在逻辑判断上为假(0),但空字符串不等于null,下面的代码会打印empty,但不会打印null。
s="";
if(!s)
    print("empty");
if(s==null)
    print("null");


字符串成员函数

substr(index,len)
根据索引位置和字符个数,获取字符串中一段子字符串
s="Hello";
s2=s.substr(1,2);//从位置1开始(Silk的索引从0开始,和C相同,所以从1开始,就是从第2个字符开始),截取长度为2的字符串,所以s2="el";


find(str), find(str,index)
从字符串中查找子字符串,返回找到的起始位置,没有找到返回-1
s="Hello,world!";
pos=s.find("world");//pos=6,默认从索引位置0开始查找
pos=s.find("world",10);//pos=-1,从索引位置10开始查找,所以没有找到


rfind(str), rfind(str,index)
从索引位置开始反向往前查找,找到则返回索引位置
s="Hello,world!";
pos=s.rfind("world");//pos=6,默认从最后位置开始反向查找
pos=s.rfind("world",10);//pos=6,从索引位置10开始反向查找,找到字符串,位置为6


replace(oldStr,newStr)
在字符串中查找所有的子字符串,用新的字符串代替
s="Hello,world!";
s=s.replace("Hello","Hi");//注意:replace函数会返回代替后生成的新字符串而保持原来的字符串不变,所以必须接收返回的值。


replace(pos,len,newStr)
在字符串中用新的字符串newStr代替位置为pos,长度为len的子字符串
s="Hello,world";
s=s.replace(0,5,"Hi");//用字符串Hi代替开始位置为0,长度为5的字符(Hello)


size()
返回字符串的大小(字符个数),  当然也可以用内置函数_len(s)来获取字符个数
print(s.size());


split(seperateStr)
根据分隔符分割整个字符串,返回一个包含所有分割后的子串的数组。
s="abc,bbc,good";
arrStr=s.split(",");


insert(pos,str)
在指定位置插入字符串,返回新字符串
s="Good, how are you";
s=s.insert(4," morning");
print(s);


erase(pos,len)
在指定位置删除指定长度的字符串,返回新字符串
s="Good, how are you";
s=s.erase(4,2);
print(s);


trim()
去除字符串左右的空格,回车换行以及制表字符
s=" Good, how are you ";
s=s.trim();
print(s);


ltrim()
去除字符串左边的空格,回车换行以及制表字符
s=" Good, how are you ";
s=s.ltrim();
print(s);


rtrim()
去除字符串右边的空格,回车换行以及制表字符
s=" Good, how are you ";
s=s.rtrim();
print(s);


lower()
把整个字符串转换成小写字母的字符串,返回转换后的字符串
s=" Good, how are you ";
s=s.lower();
print(s);


upper()
把整个字符串转换成大写字母的字符串,返回转换后的字符串
s=" Good, how are you ";
s=s.upper();
print(s);