Dart入门—基础类型与正则

基础数据类型与正则

数字与布尔值

数字类型与布尔类型与其他语言是一样一样的

部分属性

    int figureA = -93;
    // figureA是否为负数
    print(figureA.isNegative);
    // figureA是否是有限的
    print(figureA.isFinite);
    // figureA是否正无穷大或负无穷大
    print(figureA.isInfinite);

    double figureB = 64.742;
    // 返回figureB的符号,-1.0:值小于0、+1.0:值大于0、-0.0/0.0/NaN:值是其本身
    print(figureB.sign);
    // 返回figureB运行时的类型
    print(figureB.runtimeType);
    // 返回figureB的哈希码
    print(figureB.hashCode);

    int figureC = 13;
    // figureC是否为奇数
    print(figureC.isOdd);
    // figureC是否为偶数
    print(figureC.isEven);
    // 返回figureC所占存储位
    print(figureC.bitLength);

常用方法

    int figureA = -93;
    // 返回figureA的绝对值
    print(figureA.abs());
    // 返回figureA的字符串
    print(figureA.toString());

    double figureB = 64.742;
    // 返回figureB的整数值
    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保留几位小数后精确结果的字符串
    print(figureB.toStringAsPrecision(3));

    int figureC = 31;
    // figureC对比其他整数,0:相同、1:大于、-1:小于
    print(figureC.compareTo(20));
    // 将figureC控制在指定区间的整数
    print(figureC.clamp(20, 25));
    // 返回figureC转换成指定基数(进制)的字符串
    print(figureC.toRadixString(16));

    int figureD = 12;
    // 返回figureD与其他整数的最大公约数
    print(figureD.gcd(18));
    // 返回figureDg与其他整数的截取余数
    print(figureD.remainder(18));
    // 返回figureD几次幂值的字符串
    print(figureD.toStringAsExponential(2));

字符串常量与变量

字符串常量

String是一成不变的,一旦定义就不能改变

String name = "XiaoMing say : \n";
String say = """
Keep on going ...
never give up ...
never say die ...
""";
print(name + say);

部分属性

    String str = "Hello world!";
    // 返回字符串的UTF-16代码单元列表
    print(str.codeUnits);
    // 返回根据代码单元生成的哈希码
    print(str.hashCode);
    // 字符串是否为空
    print(str.isEmpty);
    // 字符串是否不为空
    print(str.isNotEmpty);
    // 字符串的长度
    print(str.length);
    // 返回字符串Unicode代码的可迭代对象
    print(str.runes);
    // 返回对象运行时的类型
    print(str.runtimeType);

常用方法

返回对象的字符串表示

String str = "Hello world!";
print(str.toString());

截取字符串

String str = ‘Dart is fun‘;
String newStr = str.substring(0, 4);
print(newStr);

在字符串中插入字符串

String name = "XiaoMing";
print("My name is ${name}");

输出字符串的Unicode编码

String str = "Dart";
print(str.codeUnitAt(0));
print(str.codeUnits);

去掉字符串前后空格

String str = "\tDart is fun\n";
print(str.trimLeft());
print(str.trimRight());
print(str.trim());

字符串的大小写转换

String str = "ABCdef";
print(str.toLowerCase());
print(str.toUpperCase());

拆分字符串

String strA = "Hello world!";
print(strA.split(" "));

String strB = "abba";
print(strB.split(new RegExp(r"b*")));

是否包含其他字符串

String str = ‘Dart strings‘;
print(str.contains(‘D‘));
print(str.contains(new RegExp(r‘[A-Z]‘)));
print(str.contains(‘D‘, 0));
print(str.contains(new RegExp(r‘[A-Z]‘), 0));

在字符串前后补占位符

String str = "86";
print(str.padLeft(4, ‘0‘));
print(str.padRight(4, ‘0‘));

获取指定字符出现的位置

String str = ‘Dartisans‘;

print(str.indexOf(‘art‘));
print(str.indexOf(new RegExp(r‘[A-Z][a-z]‘)));

print(str.lastIndexOf(‘a‘));
print(str.lastIndexOf(new RegExp(r‘a(r|n)‘)));

替换字符串中所有匹配字符

String str = "resume";
print(str.replaceAll(new RegExp(r‘e‘), ‘é‘));

字符串变量

StringBuffer是可改变的,定义后还可以再修改

StringBuffer xiaomingSaid = new StringBuffer();
xiaomingSaid.write("All the world‘s a stage ... ");
xiaomingSaid.write("And all the men and women merely players ...");
print(xiaomingSaid);

部分属性

    StringBuffer strBuf = new StringBuffer();
    strBuf.write("Sow nothing, reap nothing.");
    // 返回字符串缓冲区的哈希码
    print(strBuf.hashCode);
    // 字符串缓冲区是否为空
    print(strBuf.isEmpty);
    // 字符串缓冲区是否不为空
    print(strBuf.isNotEmpty);
    // 返回字符串缓冲区累积内容的长度
    print(strBuf.length);
    // 返回对象运行时的类型
    print(runtimeType);

常用方法

    StringBuffer strBuf = new StringBuffer();
    // 添加字符串到字符串缓冲区内
    strBuf.write("Do one thing at a time, and do well.");
    // 返回字符串缓冲区的所有内容
    print(strBuf.toString());
    // 清除字符串缓冲区
    strBuf.clear();

正则表达式

部分属性

    RegExp exp = new RegExp(r"(\w+)");
    // 返回正则表达式的哈希码
    print(exp.hashCode);
    // 正则表达式是否区分大小写
    print(exp.isCaseSensitive);
    // 正则表达式是否匹配多行
    print(exp.isMultiLine);
    // 返回源正则表达式字符串
    print(exp.pattern);
    // 返回对象运行时的类型
    print(exp.runtimeType);

常用方法

    RegExp exp = new RegExp(r"(\w+)");
    // 返回正则表达式匹配项的可迭代对象
    print(exp.allMatches("abc def ghi"));
    // 搜索并返回第一个匹配项,没有则返回null
    print(exp.firstMatch(""));
    // 正则表达式是否找到匹配项
    print(exp.hasMatch("as"));
    // 从第几个字符开始匹配正则表达式
    print(exp.matchAsPrefix("ab cd", 3));
    // 返回正则表达式的第一个匹配字符串
    print(exp.stringMatch("abc de"));
    // 返回正则表达式的字符串表示
    print(exp.toString());

实用案例

验证邮政编码的正则,返回是否匹配的布尔值

RegExp postalcode = new RegExp(r‘(\d{6})‘);
print(postalcode.hasMatch("518000"));

验证手机号码的正则,以Iterable< Match >返回所有匹配项

RegExp mobile = new RegExp(r"(0|86|17951)?(13[0-9]|15[0-35-9]|17[0678]|18[0-9]|14[57])[0-9]{8}");
Iterable<Match> mobiles = mobile.allMatches("13812345678 12345678901 17012345678");
for (Match m in mobiles) {
    String match = m.group(0);
    print(match);
}

验证网址URL的正则,如果匹配成功以Match返回匹配项,否则返回null

RegExp url = new RegExp(r"^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+");
print(url.firstMatch("http://www.google.com"));

验证身份证号码的正则,返回第一个匹配的字符串

RegExp identity = new RegExp(r"\d{17}[\d|x]|\d{15}");
print(identity.stringMatch("My id number is 35082419931023527x"));
时间: 2024-10-24 19:47:51

Dart入门—基础类型与正则的相关文章

Dart入门—集合类型

Dart入门-集合类型 Dart核心库提供了List(列表).Map(映射).Set(集)三种集合类型 列表(List) 固定长度的列表,一旦定义就无法改变长度 List<int> fixedLengthList = new List(5); fixedLengthList[0] = 87; print(fixedLengthList); print(fixedLengthList[0]); 可改变长度的列表,可以根据需要改变长度 List<int> growableList =

C语言/C++编程新手入门基础学习中链接类型

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制).创一个小群,供大家学习交流聊天如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学C++能够持之以恒C++爱好群,如果你想要学好C++最好加入一个组织,这样大家学习的话就比较方便,还能够共同交流和分享资料,给你推荐一个学习的组

【Go入门教程2】内置基础类型(Boolean、数值、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值

这小节我们将要介绍如何定义变量.常量.Go内置类型以及Go程序设计中的一些技巧. 定义变量 Go语言里面定义变量有多种方式. 使用var关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型放在变量名后面: // 定义一个名称为“variableName”,类型为"type"的变量 var variableName type 定义多个变量 // 定义三个类型都是“type”的变量 var vname1, vname2, vname3 type 定义变量并初始化值 // 初始化

python入门(五)基础类型补充

基础类型补充 str 字符串 1.首字母大写 name="alex" name=name.capitalize() print(name) 结果为 Alex 2.每个单词首字母大写 name="alex wusir" name=name.title()#两个单词必须有间隔,没有间隔,计算机识别成一个单词 print(name) 结果为 Alex Wusir 3.大小写反转 name="Alex" name=name.swapcase() prin

HTML入门基础教程相关知识

HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文本文档的一种简单标记语言,经常用来创建web页面.html文件是带有格式标识符和超文本链接的内嵌代码的ascii 文本文件——html结构了解. html文本是由 html命令组成的描述性文本,html 命令可以说明文字. 图形.动画.声音.表格.链接等. html网页结构包括头部 (head).主

Typescript学习笔记(一)基础类型

为了面向ng2和前端未来,开始搞向ts,ts是微软出的一枚语言,作为es6的超集,他出的一些特性还是蛮好用的(略坑).对于我等纯前端(从开始就接触javascript)的人来说,真想说,这特么什么鬼.部分特性同es6(个人对es6还是蛮有好感的).ts同期的coffeescript,将js python化,ts也把js搞的向其他语言靠拢.. 中文学习,这里是英文学习.如果不想看这些东西,那看我笔记学吧.哈哈. ts的基础类型,布尔值,数字,字符串,数组,元组(Tuple),枚举,任意值,空值.后

【转】Gulp入门基础教程

Gulp入门基础教程 原文在此 前言最近流行前端构建工具,苦于之前使用Grunt,代码很难阅读,现在出了Gulp, 真是摆脱了痛苦.发现了一篇很好的Gulp英文教程,整理翻译给大家看看. 为什么使用GulpGulp基于Node.js的前端构建工具,通过Gulp的插件可以实现前端 代码的编译(sass.less).压缩.测试:图片的压缩:浏览器自动刷新,还有许多 强大的插件可以在这里查找.比起Grunt不仅配置简单而且更容易阅读和维护,我们 可以做一个对比: Grunt: sass: { dist

VB.NET入门基础

众所周知,Visual Basic.NET是由Visual Basic发展而来,这两者之间的升级使得Visual Basic语言发生了革命性的变革,使得由基于对象编程的Visual Basic过渡到了全然面向对象的Visual Basic.NET.这也使得VisualBasic.NET更加难以掌握,可是原来VB中的一些使用方法依旧延续了下来,本篇博客不讨论它们之间的使用方法,也不讨论两种语言的异同,仅仅介绍VB.NET的基础内容. 废话不多说,先来一张图概述VB.NET的基本内容. 本篇博客将V

Scrum入门基础系列之Scrum框架

Scrum入门基础系列之Scrum框架 3条回复 读过几本Scrum书的人,想必对于Scrum框架都可以如数家珍,如Scrum的3个角色,5个会议,3个工件.在展开这些内容之前,我想先介绍一下Scrum的价值观以及敏捷宣言. 敏捷宣言[1] 个体与互动    胜于    流程与工具 可工作的软件    胜于    详尽的文档 客户协作    胜于    合同谈判 响应变化    胜于    遵循计划 也就是说,尽管右项有其价值,我们更看重左项. Scrum价值观[2] 专注:一段时间内只专注于少