写点什么

dart 系列之: 在 dart 中使用数字和字符串

作者:程序那些事
  • 2021 年 11 月 23 日
  • 本文字数:1646 字

    阅读完需:约 5 分钟

dart系列之:在dart中使用数字和字符串

简介

要想熟悉一种语言,最简单的做法就是熟悉 dart 提供的各种核心库。dart 为我们提供了包括 dart:core,dart:async,dart:math,dart:convert,dart:html 和 dart:io 这几种常用的库。

今天给大家介绍一下 dart:core 中的数字和字符串的使用。

# 数字

dart:core 中定义了三种类型的数字,分别是 num,int 和 double。

num 是所有数字的总称。int 和 double 都是继承自 num,是 num 的子类。

事实上,dart:core 中还有以一种数据类型叫做 BigInt,BigInt 是一种独立的数据类型,并不是 num 的子类:

abstract class BigInt implements Comparable<BigInt>
复制代码

数字中最常见的操作就是将字符串转换为数字,转换可以调用 parse 方法,先看下 num 中 parse 方法的定义:

  static num parse(String input, [@deprecated num onError(String input)?]) {    num? result = tryParse(input);    if (result != null) return result;    if (onError == null) throw FormatException(input);    return onError(input);  }
复制代码

传入的 input 可以是十进制、也可以是十六进制,如下所示:

assert(int.parse('18') == 18);assert(int.parse('0x05') == 5);assert(double.parse('0.50') == 0.5);
复制代码

num.parse 会将对应的字符转换成为 int 或者 double 类型:

assert(num.parse('18') is int);assert(num.parse('0.50') is double);
复制代码

parse 方法还可以传入字符串对应的基数,比如是十进制还是十六进制:

assert(int.parse('11', radix: 16) == 17);
复制代码

上面我们讲到了如何将字符串转换成为数字,下面是如何将数字转换成为字符串,num 提供了 toString()方法,可以方便的将 int 和 double 转换成为 string。

assert(18.toString() == '18');
assert(3.1415.toString() == '3.1415');
复制代码

对于小数来说,可以使用 toStringAsFixed 来指定小数的位数:

assert(3.1415.toStringAsFixed(2) == '3.14');
复制代码

如果要使用科学记数法的话,可以使用 toStringAsPrecision:

assert(314.15.toStringAsPrecision(2) == '3.1e+2');
复制代码

字符串

所有的字符串在 dart 中都是以 UTF-16 进行编码的,dart 中的 string 定义了很多常用的并且非常有用的方法。

比如在字符串中进行查询:

assert('www.flydean.com'.contains('flydean'));
assert('www.flydean.com'.startsWith('www'));
assert('www.flydean.com'.endsWith('com'));
assert('www.flydean.com'.indexOf('flydean') == 4);
复制代码

从字符串中截取子串:

assert('www.flydean.com'.substring(4, 11) == 'flydean');
复制代码

将字符串按照特定字符进行截取:

var parts = 'www.flydean.com'.split('.');assert(parts.length == 3);
复制代码

那么 dart 中对应中文的支持是这么样的呢? 因为 dart 中所有的字符都是以 UTF-16 来表示的,如果一个 UTF-16 单元能够表示对应的字符,则中文使用起来也是没有问题的:

  assert('你好吗?'.substring(1,2) == '好');  assert('你好吗?'[1] == '好');
复制代码

但是有些字符使用一个 UTF-16 单元是表示不了的,这时候就需要用到 characters 包对特定的字符进行处理。

字符串转换为大写或者小写:

assert('www.flydean.com'.toUpperCase() ==    'WWW.FLYDEAN.COM');
// Convert to lowercase.assert('WWW.FLYDEAN.COM'.toLowerCase() == 'www.flydean.com');
复制代码

dart 提供了 trim()方法,可以对字符串前后端的空格进行截取:

assert('  www.flydean.com  '.trim() == 'www.flydean.com');
复制代码

StringBuffer

除了显示的字符串来创建字符以外,dart 还提供了 StringBuffer 类,通过 StringBuffer 类我们可以自由创建字符串:

var sb = StringBuffer();sb  ..write('www.flydean.com ')  ..writeAll(['is', 'very', 'good'], ' ')  ..write('.');
var fullString = sb.toString();
复制代码

上面代码输出:”www.flydean.com is very good.”

其中 writeAll() 将传入的字符数组以特定的连接符进行连接。

总结

以上就是 dart 中数字和字符串的介绍。

本文已收录于 http://www.flydean.com/14-dart-number-string/

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

发布于: 22 小时前阅读数: 6
用户头像

关注公众号:程序那些事,更多精彩等着你! 2020.06.07 加入

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在公众号:程序那些事!

评论

发布
暂无评论
dart系列之:在dart中使用数字和字符串