String的基本使用
字符串定义
- 使用单引号或者双引号
String str1 = 'maybe1';
String str2 = "maybe2";
//使用三个单引号或三个双引号,创建多行字符串,保留内在格式,如换行和缩进,里面些什么输出就是什么
String str3 = ''' maybe3
maybeuuhiop
yuip
''';
String str4 = """maybe4
tyuiuhoijuuvyiuiojop
yuipoiuihj
""";
print(str1);//maybe1
print(str2);//maybe2
print(str3);
/*maybe3
maybeuuhiop
yuip
*/
print(str4);
/*
maybe4
tyuiuhoijuuvyiuiojop
yuipoiuihj
*/
字符串常用属性
String str5 = '123';
String str6 = '';
print(str5.length); //3 字符串长度
print(str5.isEmpty);// flase 是否为空
print(str6.isNotEmpty); //flase 是否不为空
- 字符串连接
String str7 = '1234';
String str8 = 'abc';
String str9 = str7 + str8; //使用+连接
String str10 = 'aaa' 'ccc'; //使用相邻空格符号连接,必须是两个字符串,不能是变量
print(str9); //1234abc
print(str10);//aaaccc
- 字符串模板,使用${}将一个字符串变量嵌入另一个字符串内
String str11 = 'aa';
String str12 = 'bb${str11}bb';
print(str12);//bbaabb
String str13 = 'bb${str11.toUpperCase()}bb';
print(str13); //bbAAbb
- 字符串与数字之间的转换
int int1 = int.parse('33');
print(int1);//33
double d1 = double.parse('3.14');
print(d1); //3.14
print(33.toString()); //33
print(3.34.toString()); //3.34
print(5678.1267.toStringAsFixed(3)); //5678.127 保留精度,会四色五入
- 字符串切割
String str14 = 'xyz67823';
print(str14.substring(0,2));//xy 从0 -2 切割字符串得到新的字符串
print(str14.substring(3)); //67823 从指定index到末尾
String str15 = 'a,b,c,d,e,,,z,';
List list15 = str15.split(','); //只用’,‘分割,返回一个数组
print(list15);//[a, b, c, d, e, , , z, ]
String str16 = 'a b,c,d';
String str17 = str16.splitMapJoin(
",",
onMatch:(Match match){
return 'b';
},onNonMatch: (nonMatch) {
return 'z';
} //查询“,”,用onMatch的返回值替换“,”用onNonMatch的返回值替换其他
);
print(str17); //zbzbz
- 字符串判断 是否包含或以 xxx开始结束等等
String str18 = 'a1123acv';
print(str18.startsWith('a'));//true
print(str18.startsWith('aa',1)); // false 从index=1 开始查找
print(str18.endsWith('c')); //false
print(str18.contains('ab')); //flase
print(str18.contains('ac',3)); // true从idnex =3 开始查找
- 字符串替换
String str19 = 'tyfguihojpk6789';
print(str19.replaceAll('f', 'xyz')); //tyxyzguihojpk6789 替换全部符合条件
print(str19.replaceFirst('ui', 'maybe')); //tyfgmaybehojpk6789 只替换第一个符合条件的
print(str19.replaceFirst('fg', 'maybe11',2)); //tymaybe11uihojpk6789 在index=2 开始替换第一个符合条件的
print(str19.replaceRange(1, 5, 'xxx')); //txxxihojpk6789 范围内替换 1 - 5 含头不含尾
print(str19.replaceAllMapped('k', (match){ //tyfguihojpxyz6789 用方法返回值替换指定的字符串所有的
return 'xyz';
}
));
print(str19.replaceFirstMapped('o', (match) { //tyfguihxxxxjpk6789 用方法返回值替换指定的字符串 只替换第一个符合条件的
return 'xxxx';
}));
- 字符串查找 查找元素所在的index
String str20 = 'abcdefgab';
print(str20.indexOf('ab')); //0 第一个符合条件的index
print(str20.indexOf('ab',2));//7 从index = 2 开始往后找 找不到则返回-1
print(str20.lastIndexOf('fg')); //5 从后往前找,返回第一个符合条件的index
print(str20.lastIndexOf('fg',1)); //-1 从后往前找,从index = 1开始找,找不到返回-1
print(str20.lastIndexOf('fg',8));//5 //从后往前找,从index = 5 开始找,找到了则返回index
- 转化为大小写
String str21 = 'aabbCCC';
print(str21.toLowerCase()); //aabbccc 小写
print(str21.toUpperCase()); //AABBCCC 大写
- 去除空格
String str22 = ' 122 cc zz ';
print(str22.trim());//去除左右两边的空格
print(str22.trimRight()); //去除右边的空格
print(str22.trimLeft()); // 去除左边的空格
- 补齐长度 剩余位使用指定字符串替换
String str23 = '123';
print(str23.padLeft(6)); // 123 剩余3个位,默认使用''补齐
print(str23.padRight(7,'a'));//123aaaa 剩余4个位,指定使用a补齐
print(str23.padRight(7,'zz'));//123zzzzzzzz 剩余4个位,指定使用 zz补齐 替换后长度不是7 补齐了4个zz
print(str23.padLeft(2,'b'));//123 如果指定长度小于原字符串长度,返回原字符串
- 字符串先后比较
String str24 = 'abc123';
print(str24.compareTo('aaa')); //1 a > b
print(str24.compareTo('abc123'));//0 a = b
print(str24.compareTo('add111'));//-1 a < b
字符串的比较是基于字符的 ASCII值进行的。在上述代码中,str24.compareTo('aaa')返回1,表示str24大于'aaa',因为'c'的 ASCII 值大于'a'。同样,str24.compareTo('abc123')返回0,表示str24等于'abc123',因为它们的字符序列完全相同。而str24.compareTo('add111')返回-1,表示str24小于'add111',因为'a'的 ASCII 值小于'd'。
网友评论