字符串篇
定义类型的时候可以类似于JavaScript写var,系统可以自动推断数据类型,也可以自己写类型
void main()
{
var name = "Ning";
var goal = " is going to study Dart and Fluttery.";
print(name+goal);
}
或
void main()
{
String name = "Ning";
String goal = " is going to study Dart and Fluttery.";
print(name+goal);
}
//截取字符串
String str = "Dart is fun";
String substr = str.substring(0,4);//截取从位置0到4的字符串
print(substr);
//在字符串中插入字符串
String name = "Ning";
print('My name is ${name}');
//输出字符串的Unicode编码
String name = "Ning";
print(name.codeUnitAt(0));//输出位置0的
print(name.codeUnits);//输出整个的,是一个list
//去掉字符串前后空格
String str = " Dart ";
print(str.trimLeft());//去左边
print(str.trimRight());//去右边
print(str.trim());//两边都去
//全部转为大写(小写)
String str = "Dart";
print(str.toUpperCase());
print(str.toLowerCase());
//字符串的拆分
String str = "Hello world!";
print(str.split(" "));
//判断是否包含某字符或字符串
String str = 'Dart is fun';
print(str.contains('f'));
print(str.contains(new RegExp(r'[A-Z]')));//是否包含大写字母
print(str.contains('t', 3));//指定位置
print(str.contains(new RegExp(r'[A-Z]'), 0));//指定位置
//获取指定字符出现位置
String str = 'Pianist';
print(str.indexOf('ist'));
print(str.indexOf(new RegExp(r'[A-Z][a-z]')));//获取类似于Aa字符串的位置
print(str.lastIndexOf('a'));
print(str.lastIndexOf(new RegExp(r'a(r|n)')));//获取an或ar的位置
//替换所有
String str = "Pianist,artist";
print(str.replaceAll(new RegExp(r'ist'), 'ists'));//用ists替换所有ist
数字与布尔篇
void main()
{
int a = -93;
print(a.isNegative);// a是否为负数
double b = 64.742;
print(b.sign);// 返回b的符号,-1.0:值小于0、+1.0:值大于0、-0.0/0.0/NaN:值是其本身
int c = 13;
print(c.isOdd);// c是否为奇数
print(c.isEven);// c是否为偶数
}
void main()
{
int figureA = -93;
print(figureA.abs());// 返回figureA的绝对值
print(figureA.toString());// 返回figureA的字符串
double figureB = 64.742;
print(figureB.toInt());// 返回figureB的整数值
print(figureB.toDouble());// 返回figureB的双精度值
print(figureB.ceilToDouble());// 返回大于figureB的双精度值(整数)
print(figureB.floorToDouble()); // 返回小于figureB的双精度值(整数)
print(figureB.roundToDouble());// 返回figureB四舍五入的双精度值(整数)
print(figureB.toStringAsFixed(2));// 返回figureB保留几位小数的字符串
int figureC = 31;
print(figureC.compareTo(20));// figureC对比其他整数,0:相同、1:大于、-1:小于
print(figureC.clamp(20, 25));// 将figureC控制在指定区间的整数
int figureD = 12;
print(figureD.gcd(18));// 返回figureD与其他整数的最大公约数
print(figureD.remainder(18));// 返回figureDg与其他整数的截取余数
print(figureD.toStringAsExponential(2));// 返回figureD几次幂的字符串
}
正则表达式
RegExp exp = new RegExp(r"(\w+)");
print(exp.isCaseSensitive);// 正则表达式是否大小写敏感(区分大小写)
print(exp.isMultiLine);// 正则表达式是否多行
print(exp.pattern);// 返回源正则表达式字符串
void main()
{
RegExp exp = new RegExp(r"(\w)");
print(exp.allMatches("abc cde"));// 返回正则表达式匹配项的可迭代对象
print(exp.firstMatch("w"));// 搜索并返回第一个匹配项,没有则返回null
print(exp.hasMatch("as"));// 正则表达式是否找到匹配项
print(exp.matchAsPrefix("ab cd", 3));// 从第几个字符开始匹配正则表达式
print(exp.stringMatch("abc def "));// 返回正则表达式的第一个匹配字符串
print(exp.toString());// 返回正则表达式的字符串表示
}
正则表达式好难懂,对小白太不友好了QAQ
变量
变量的声明除了具体的类型int、double、String和bool以外,还可以用var声明变量。
但是,一旦类型确定,就无法更改类型。
变量默认值为null
在dart中,万物皆对象
var s = "dart is fun";
var n = 16;
var b = true;
var d = 3.14;
print(s is String); // true
print(n is int); // true
print(b is bool); // true;
print(d is double); // true;
s = 12; // 报错,string类型无法指定为int类型
var nullVar;
print(nullVar == null); // true
int nullInt;
print(nullInt == null); // true
bool nullBool;
print(nullBool == null); // true
然后如果变量的类型是需要变化的,那么可以用dynamic来声明
void main()
{
dynamic a = "dart is fun";
print(a is String);//true
a = 12;//把a的类型从String转变为int
print(a is int);//true
}
常量
常量可以用final和const的来声明。
void main()
{
final a = 6;
const b = 6;
var n = 10;
final c = n;
// const d = n;//报错,不是一个常量表达式
final e = new DateTime.now();
// const f = new DateTime.now();//报错,因为不是一个常量表达式
// final g = const [n,2,3];//报错,不是常量表达式
final h = const [b,2,3];
}
final和const的区别。
1. final的变量只初始化一次,可以是编译时的常量,也可以不是。const必须是编译时的常量。(一个确定的数值或字符串)
2. final只是在第一次运行的时候确定常量值,const必须指定常量值。比如:final可以是一个函数的计算结果,但是const不行。
3. const可以修饰值,final不可以。const的值必须是const, final可以不是。
慢慢学叭
一步一步来吧
我只是在追随大佬的脚步
本文参考博客:https://blog.csdn.net/hekaiyou/article/details/51310381