当前位置: 首页 > news >正文

第三百四十九回

文章目录

  • 1. 概念介绍
  • 2. 原理与方法
    • 2.1 知识对比
    • 2.2 使用方法
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"加密包crypto"相关的内容,本章回中将介绍characters包.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

在项目中会遇到获取字符串中某一个或者多个字符的需求,比如我们想获取"hello-word"中减号后面的字符,怎么办呢?本章回将介绍具体的操作方法。

2. 原理与方法

在Flutter中获取字符串中的字符需要借助三方包来实现,这个三方包叫作:characters,不过该包是dart官方推出的包,因此大家可以放心使用: 一方面不用担心
包中的错误,另一方面不用担心它后期的维护问题。

2.1 知识对比

我记得在C编程语言中,字符和字符串都是独立的类型,字符是char类型,字符串是char类的的数组,想使用字符串中的某个字符时直接从数组中获取某个成员就可以。
在dart中时没有给字符设置专门的类型,但是对字符串设置了专门的类型:String.我们想获取字符串中的某一个或者多个字符时可以使用String的substring()方
法,在该方法中传入字符在字符串中的索引值就可以获取到该字符。它的原理和C语言中从字符数组中获取字符相同,不过它获取到的仍然是一个字符串,只不过该字符串
中包含一个或者多个字符,不要以为只有一个字符就是字符类型,它仍然是String类型的字符串。

2.2 使用方法

  • 在yaml配置文件中导入characters包,并且获取到当前项目中;
  • 通过characters属性可以把字符串转换成字符;
  • 使用包中的相关的接口获取到想要的字符;
    上面介绍的方法比较抽象,我们将在后面的小节中通过具体的示例代码来演示。

3. 示例代码

// Using String indices.
String firstTagString(String source) {var start = string.indexOf("<") + 1;if (start > 0) {var end = string.indexOf(">", start);if (end >= 0) {return string.substring(start, end);}}return null;
}// Using CharacterRange operations.
Characters firstTagCharacters(Characters source) {var range = source.findFirst("<".characters);if (range != null && range.moveUntil(">".characters)) {return range.currentCharacters;}return null;
}

上面的示例代码演示了如何从字符串中获取字符,代码中使用了两种方法来获取字符串中的字符,大家可以对比一下其中的差异。这些示例代码来自官方文档,建议大家自
己动手去试试,体验一下程序的运行结果。此外,characters包提代了接口比较多,这些接口完全可以满足项目中的需求,限于篇幅,我们在这里就不一一演示这些接
口了,大家可以参考官方文档中的介绍。

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • 使用characters包中的接口可以从字符中获取到字符;
  • characters包获取字符的原理和C语言中通过字符数组获取字符的原理相同;
  • characters包提供了多个操作字符的接口,建议大家查阅官方文档;
    看官们,与"characters包"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论

相关文章:

  • 基于Qt数据库项目实现(Sqlite3为例)|考查数据库、表格(QTableView 显示)(进阶)
  • c语言之for循环语句
  • LLM(2)之指令提示词(Prompt)基础教学
  • 5.10 BCC工具之stacksnoop简介
  • 爆火的人工智能开源open-interpreter源码解析
  • pytorch 实现线性回归(深度学习)
  • 力扣72. 编辑距离(动态规划)
  • EasyRecovery软件免费版与付费版有哪些功能区别?
  • Ps:污点修复画笔工具
  • 【Linux】线程同步
  • 《白话C++》第10章 STL和boost,Page67~70 std::auto_ptr
  • react中如何做到中断diff过程和恢复
  • 中科院一区论文复现,改进蜣螂算法,Fuch映射+反向学习+自适应步长+随机差分变异,MATLAB代码...
  • (13)Hive调优——动态分区导致的小文件问题
  • 【大数据Hive】hive 表设计常用优化策略
  • (三)从jvm层面了解线程的启动和停止
  • [译] React v16.8: 含有Hooks的版本
  • CentOS7简单部署NFS
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • github指令
  • idea + plantuml 画流程图
  • JDK9: 集成 Jshell 和 Maven 项目.
  • mysql常用命令汇总
  • Rancher-k8s加速安装文档
  • 初识MongoDB分片
  • 记录:CentOS7.2配置LNMP环境记录
  • 实习面试笔记
  • 使用 Docker 部署 Spring Boot项目
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 我感觉这是史上最牛的防sql注入方法类
  • 线性表及其算法(java实现)
  • 异常机制详解
  • 译自由幺半群
  • 用Canvas画一棵二叉树
  • elasticsearch-head插件安装
  • Java数据解析之JSON
  • Prometheus VS InfluxDB
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​力扣解法汇总946-验证栈序列
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • $.ajax()方法详解
  • (1)(1.13) SiK无线电高级配置(五)
  • (145)光线追踪距离场柔和阴影
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (C#)一个最简单的链表类
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (floyd+补集) poj 3275
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (六)软件测试分工
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • .gitignore文件---让git自动忽略指定文件
  • .java 9 找不到符号_java找不到符号
  • .Net 8.0 新的变化
  • .net 提取注释生成API文档 帮助文档