共计 2400 个字符,预计需要花费 6 分钟才能阅读完成。
简介
要想相熟一种语言,最简略的做法就是相熟 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/
最艰深的解读,最粗浅的干货,最简洁的教程,泛滥你不晓得的小技巧等你来发现!
欢送关注我的公众号:「程序那些事」, 懂技术,更懂你!