簡介
要想熟悉一種語言,最簡單的做法就是熟悉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/
最通俗的解讀,最深刻的乾貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!
歡迎關注我的公眾號:「程式那些事」,懂技術,更懂你!