首页 > 其他分享 >rust学习九.2、集合之字符

rust学习九.2、集合之字符

时间:2024-11-18 16:57:00浏览次数:1  
标签:字符 java String println 集合 rust cn

按照作者的意思,字符不是看起来那么简单!

的确,字符在大部分语言中,都不是看起来那么简单!

字符的内容看起来很多,又很少!

多是因为涉及到编码、构成、方法(有许多方法)还有字符切片。

少是因为,其实和java等语言其实没有大的区别。

一、构成

rust的字符内部是 vec(u8)+方法,看起来和java其实区别不大,至少在逻辑层面,大家差不多!

rust.String定义

 

java.String定义(jdk17,摘选)

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence,
               Constable, ConstantDesc {
    @Stable
    private final byte[] value;
}

 

没有太多本质的区别,大家都有数组存储实际的值,不同的是java存储的是字节数组,而rust存储的u8数组。

这都是表面的,其实都是一个字节数组。

 

如果用的是rustOver,那么查看源码还是比较方便的,操作方式和eclipse,idea一样,ctrl+点击鼠标左键。

 如上图,点击红色矩形中的String,即可跳转到String.rs

 

二、示例

 

上例中,使用字符串切片,这个其实和字符串没有本质的区别,因为前者是对字符串的局部引用。

上例中,演示了企图通过索引/或者切片的方式访问多字节utf-8字符的部分数据时发生错误的情形。

这种情况下,会给出足够好友的提示! 这也是rustc的一大优点。

根据这个提示,如果把上文的代码改为:

println!("{}的第一个字符是:{}",cn,&cn[0..3]); 那么还是可以正确执行的!

 

需要逐个打印字符串的每个字符,可以使用以下方式:

let cn:String="中华人民共和国".to_string(); println!("cn的包含了以下几个汉字:"); for c in cn.chars(){ println!("{}",c); }

 

三、小结

才看了个头,不敢说对String有什么深入了解,所以就说一些基本的:

  1. rust的String和其它语言(java)并没有大的区别
  2. 注意rust使用utf-8来存储字符的,无法指定其它字符集。如果要达到那个目的,只能另寻他途
  3. 采用utf-8对于GBK编码的并不友好,无疑多少要会浪费一些空间和性能.如果是java就十分方便,只要指定GBK编码即可.

 

标签:字符,java,String,println,集合,rust,cn
From: https://www.cnblogs.com/lzfhope/p/18546578

相关文章

  • 使用 PyTorch 从头构建最小的 LLM 该项目构建了一个简单的字符级模型
    简介我开始尝试各种受Pokémon启发的猫名变体,试图赋予它独特、略带神秘感的氛围。在尝试了“Flarefluff”和“Nimblepawchu”等名字后,我突然想到:为什么不完全使用人工智能,让字符级语言模型来处理这个问题呢?这似乎是一个完美的小项目,还有什么比创建自定义Pokémon名......
  • iman——冲刺集合
    日志名称链接日期当天完成的工作量剩余的工作量已完成工作量占总工作量的百分比iman——冲刺日志(第一天)点击查看11月11日16%84%16%iman——冲刺日志(第二天)点击查看11月12日16%68%32%iman——冲刺日志(第三天)点击查看11月13日18%50%50%iman—......
  • C#获取数字字符串数值连续字符串
    C#获取数字字符串数值连续字符串JieStr="1,4,5,7,8,9,10,13,15,17,18,19,21,22,6,7,13";JieStrArr=JieStr.Split(",");JieStrArr=JieStrArr.Distinct().ToArray();//去重Array.Sort(JieStrArr);//排序,从小到大List<string>nstr=......
  • leetcode1963. 使字符串平衡的最小交换次数
    给你一个字符串 s ,下标从0开始 ,且长度为偶数 n 。字符串 恰好 由 n/2 个开括号 '[' 和 n/2 个闭括号 ']' 组成。只有能满足下述所有条件的字符串才能称为 平衡字符串 :字符串是一个空字符串,或者字符串可以记作 AB ,其中 A 和 B 都是 平衡字符串......
  • Java 基础 - 字符串类
    字符串类重要的字符串类有String、StringBuilder、StringBuffer1、StringString是不可变类,内部是由final定义的字符数据构成。privatefinalcharvalue[];1.1String类的层次结构如下:String实现了比较接口,字符序列接口,序列化接口,具有以上接口的特性1.2重写了Obje......
  • C++二级:数字字符求和
    数字字符求和请编写一个程序实现以下功能:从一个字符串中,提取出所有的数字字符即0-9,并作为数求和。输入一行字符串,长度不超过100,字符串中不含空格。输出字符串中所有数字字符作为数的和样例输入Lsd2f02k3ja3sdf223样例输出171、数字字符求和请编写一个程序实现以下功......
  • 洛谷 P3226 [HNOI2012] 集合选数 做题记录
    我们先建一个矩阵:\(\begin{bmatrix}1&2&4&8&16&32\\3&6&12&24&48&96\\9&18&36&72&144&288\\27&54&108&216&432&864\end{bmatrix}\)......
  • Scala字符串练习题
    objectStringManipulationExamples{defmain(args:Array[String]):Unit={//问题1valfloatString="3.14"valfloatValue=floatString.toFloatvalbackToString=floatValue.toStringprintln(backToString)//问题2v......
  • 软工硬做——冲刺集合
    日期冲刺日志当天完成的工作量剩余工作量已完成工作量占总工作量的百分比11.12软工硬做——冲刺日志第一天完成项目初始化,搭建基础框架无5%11.13软工硬做——冲刺日志第二天完成各功能模块的前端搭建AI助手的前端实现有待改进15%11.14软工硬做——冲刺......
  • Java集合框架、集合工具类Collections、泛型 ;代码之滑动窗口总结(11.15)
    Java基础学习迭代器1、迭代器的指针一开始在集合的上方next():指针下移,下移以后返回指针指向的值2、使用迭代器遍历集合元素 //正确写法Iteratoriterator=coll.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}//错误写法,......