Flutter - Dart - String

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'。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容