第三百四十九回


我们在上一章回中介绍了"加密包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包"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-02-17 01:16:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-17 01:16:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-17 01:16:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-17 01:16:02       20 阅读

热门阅读

  1. 字节跳动CEO梁汝波:要逃逸平庸的重力

    2024-02-17 01:16:02       22 阅读
  2. Rust中打印语句为什么使用宏实现?

    2024-02-17 01:16:02       31 阅读
  3. LevelDB源码阅读笔记(0、下载编译leveldb)

    2024-02-17 01:16:02       33 阅读
  4. socket编程

    2024-02-17 01:16:02       31 阅读
  5. Selenium折线图自动化测试

    2024-02-17 01:16:02       29 阅读
  6. C#继承IList 接口的设计方法

    2024-02-17 01:16:02       25 阅读
  7. Mybatis的使用

    2024-02-17 01:16:02       29 阅读
  8. C++函数模板:函数模板与特例化解析

    2024-02-17 01:16:02       32 阅读