如何更改 Rust 字符串中特定索引处的字符?

2024-03-12

我正在尝试更改字符串中特定索引处的单个字符,但我不知道如何更改。例如,我如何将“hello world”中的第四个字符更改为“x”,以便它成为“helxo world”?


最简单的方法是使用replace_range() https://doc.rust-lang.org/std/string/struct.String.html#method.replace_range像这样的方法:

let mut hello = String::from("hello world");
hello.replace_range(3..4,"x");
println!("hello: {}", hello);

Output: hello: helxo world ()

请注意,如果要替换的范围不在 UTF-8 代码点边界上开始和结束,这将会发生混乱。例如。这会引起恐慌:

let mut hello2 = String::from("hell???? world");
hello2.replace_range(4..5,"x"); // panics because ???? needs more than one byte in UTF-8

如果你想替换第 n 个 UTF-8 代码点,你必须这样做:

pub fn main() {
    let mut hello = String::from("hell???? world");
    hello.replace_range(
        hello
            .char_indices()
            .nth(4)
            .map(|(pos, ch)| (pos..pos + ch.len_utf8()))
            .unwrap(),
        "x",
    );
    println!("hello: {}", hello);
}

()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更改 Rust 字符串中特定索引处的字符? 的相关文章

  • 泛型函数的不同实例是否可以具有不同的静态变量?

    当我在泛型函数中使用静态变量时 泛型函数的每个实例中的变量实体都是相同的 例如 在这段代码中 fn foo
  • 关于Java中trim()方法的查询

    我之前提出了一个问题 但遭到了严厉的批评 所以我在这里再次提出 更简单 并重新措辞以吸引那些可能担心我之前提出问题的方式的人 背景 我正在解析一些 HTML 以获取信息 我将所有内容隔离在一系列行中 但我希望抓取的内容以及后面的一堆空格 为
  • Java中的字符算术

    在玩的过程中 我遇到了一些对我来说似乎很奇怪的事情 以下不是有效的 Java 代码 char x A x x 1 possible loss of precision 因为其中一个操作数是整数 所以另一个操作数被转换为整数 结果无法分配给字
  • 如何在 Python 中小写字符串?

    有没有办法将字符串转换为小写 Kilometers kilometers See How to change a string into uppercase https stackoverflow com questions 9257094
  • 最可靠的分裂角色

    Update 如果您被迫在 split 方法中使用单个字符 那么哪个字符最可靠 可靠的定义 不属于被分割的各个子字符串的分割字符 我们目前使用 public const char Separator char 007 如果我没记错的话 我认
  • 使用文本文件中的 var

    我的问题是 我想使用由从文本文件中在 carac 中接收的关键字启动的函数 并在该函数中使用 carac 之后的字符串 该函数位于包含的其他文件中 但我不知道该怎么做 for std string carac fichier gt gt c
  • 第二次匹配某个字符串后提取数字

    我想提取第二次出现下划线后的数字 从一个模式 通过关注这里的类似帖子 前瞻后匹配不同的数字 https stackoverflow com questions 25099231 matching different digits after
  • 文件 ReadAllLines 将外语变成乱码 (�)

    我正在创建一个工具来替换文本文件中的某些文本 我的问题是 File ReadAllLines 将希伯来字符变成乱码 奇怪的问号 有谁知道为什么会发生这种情况 请注意 我在游戏等中确实遇到希伯来语问题 在记事本中 我无法保存希伯来语文档 我可
  • Perl 字符串替换:匹配但不替换正则表达式的一部分

    假设我在 Perl 中有一个字符串 我正在尝试匹配并替换为以下内容 string s a zA Z find a zA Z replace g 如图所示 我想替换两侧被非字母字符包围的所有内容 但是 当我替换字符串时 我不想也替换这些字符
  • 如何验证字符串仅包含字母、数字、下划线和破折号? [复制]

    这个问题在这里已经有答案了 如果我迭代字符串中的所有字符 我知道如何做到这一点 但我正在寻找一种更优雅的方法 正则表达式只需很少的代码即可实现这一目的 import re if re match A Za z0 9 my little st
  • 使用比较器对向量进行排序,比较器会动态改变其行为

    我有一个自定义结构体的向量和一个属性列表 用于按优先级降序对该向量进行排序 例如 struct TheStruct artist String title String date String let order vec Vec
  • 在某些情况下,直接访问字符串的后备数组是否合理?

    我正在致力于优化文本处理软件 其中经常使用以下类 class Sentence private final char textArray private final String textString public Sentence Str
  • C# 资源文件中的 Tab 键切换

    如何向字符串资源添加制表符 t text 不起作用 您必须显式添加制表符 最简单的方法可能是在记事本中键入字符串 显式设置制表符而不是使用转义字符 并将文本复制并粘贴到资源编辑器中 对于换行符 您也会遇到类似的问题 添加换行符的最简单方法是
  • 将 h1 元素的内容复制到剪贴板?

    所以 我做了一个翻译器 但效果不是很好 但无论如何 它正在工作 我想尝试添加一些可以复制结果的内容 有没有办法做到这一点 以下是我的代码 提前致谢 我知道有一种方法可以通过输入来完成此操作 但我不确定是否可以通过标题来完成 var myTe
  • C++中字符串如何分配内存?

    我知道动态内存比设置固定大小的数组并使用其中的一部分具有优势 但在动态内存中 您必须输入要在数组中存储的数据量 使用字符串时 您可以输入任意数量的字母 您甚至可以使用字符串代替数字 然后使用函数来转换它们 这一事实让我认为字符数组的动态内存
  • perl生成字符串来匹配正则表达式

    我尝试找到一种方法来生成与正则表达式匹配的字符串 例如以下正则表达式 A Z 6 6 A Z2 9 A NP Z0 9 A Z0 9 3 3 0 1 我尝试过 Cpan 上的一些 perl 模块不起作用 gt 字符串 随机 gt 正则表达式
  • 如何在 Fortran 90 中迭代包含数字、单词和空格的字符串?

    文件说明 STL文件由以下部分组成 solid
  • 从 Kotlin 中的字符串中删除字符

    我正在尝试创建一个使用 Kotlin 中的字符串的 Android 计算器 如果逗号 或负数 已经包含一个 我不知道如何删除它 这是我的代码 它正确添加逗号 但如果用户再次单击则不会删除它 if buClickValue contains
  • python中打印字符串的长度

    有没有什么方法可以找到 即使是最好的猜测 Python中字符串的 打印 长度 例如 potaa bto 是 8 个字符len但 tty 上只打印 6 个字符宽 预期用途 s potato x1b 01 32mpotato x1b 0 0mp
  • 无需时间即可生成随机字符串?

    我知道如何使用 Runes 和播种 rand Init 在 go 中生成随机字符串time UnixNano 我的问题是 是否可以 使用 stdlib 在不使用当前时间戳 安全 的情况下播种 rand 此外 我问 因为仅仅依靠时间来为敏感操

随机推荐