高效的弦修剪

2024-01-12

我有一个String价值,我想要trim() https://doc.rust-lang.org/stable/std/string/struct.String.html#method.trim它。我可以做类似的事情:

let trimmed = s.trim().to_string();

但这总会创造出新的String例如,即使在现实生活中,绳子更有可能已经被修剪。为了避免多余的新String创造,我可以做这样的事情:

let ss = s.trim();
let trimmed = if ss.len() == s.len() { s } else { ss.to_string() };

但这是相当冗长的。有没有更简洁的方法来完成上述操作?


我想不出更简洁的方法来做到这一点。事实上,它看起来非常简洁:您需要告诉编译器修剪字符串,然后如果字符串长度相同则返回原始字符串,否则创建一个新字符串。 String 上没有“修剪但如果相等则返回原始字符串”方法。

也就是说,你可以创造自己的特质TrimOwned例如,它有这样一个方法(由 StackOverflower 提供):

trait TrimOwned {
    fn trim_owned(self) -> Self;
}

impl TrimOwned for String {
    fn trim_owned(self) -> Self {
        let s = self.trim();
        
        if s.len() == self.len() {
            self
        } else {
            s.to_string()
        }
    }
}

fn main() {
    let left  = "    left".to_string();
    let right = "right   ".to_string();
    let both  = "  both  ".to_string();

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

高效的弦修剪 的相关文章

随机推荐

  • Java 中的读取密钥

    我是 Java 新手 是否有与 C 中的 ReadKey 类似的方法来避免控制台应用程序关闭 thanks 您还可以使用System in read 如果您同意仅使用 Enter 键作为退出键
  • 如何在 python opencv GUI 中打印一些功能?

    我想在 python openCV 中打印图像的平均值 高度和宽度 我使用了两个按钮 获取照片和分析图像 和不同的 GUI 一个用于获取照片 def openphoto 和另一个用于打印这些特征 def feature 但我收到错误 注意
  • 究竟什么是超长形式/编码?

    正在阅读关于 UTF 8 的维基百科文章 http en wikipedia org wiki UTF 8 我一直想知道这个词overlong 该术语多次使用 但本文没有提供其含义的定义或参考 我想知道是否有人可以解释该术语及其目的 它是一
  • 当变量更改时更新 tkinter 标签

    我正在尝试使用 python tkinter 模块构建一个应用程序 目前 我正在尝试让标签显示的文本在选择单选按钮时更改 我将标签文本设置为文本变量 以及根据选择的按钮将文本变量更改为所需文本的函数 但是 我预计标签文本会发生变化 因为它的
  • 为什么我们不喜欢用 Big-O 表示法指定常数因子?

    让我们考虑一下经典的大 O 表示法定义 证明链接 http www phil uu nl datastructuren 10 11 knuth big omicron pdf O f n 是存在正常数的所有函数的集合C and n0 wit
  • 如何以编程方式更改布局的可见性

    有一种方法可以更改 XML 中视图的可见性 但如何以编程方式更改 XML 中定义的布局的可见性 如何获取布局对象
  • Ansible 模板中出现额外空格

    我正在生成配置文件 我希望它们能够缩进 我从 Jinja2 模板开始 当从简单的 python 程序调用时 该模板可以正确呈现 当我从 ansible 调用它时 除了循环的第一行之外 我将在所有行上获得 2 个额外的空格 生成 YAML 和
  • UIReferenceLibraryViewController hasDictionaryDefinition 仅适用于 iPhone 5s 上的模拟器

    当我调用这段代码时 NSString word hello bool response UIReferenceLibraryViewController dictionaryHasDefinitionForTerm word 在 iPhon
  • 递归搜索对象

    我想递归搜索并替换数组中的元素 该数组是基于树的 所以看起来像 Object Children Object type A Object type B Object Children Object type A Object etc 我希望
  • 推送到新的远程分支时更新被拒绝错误

    我已经分叉了一个 github 存储库 现在我的分叉已经进行了几次提交 我现在想提供one这些提交作为原始存储库的 PR 下列的这个问题的答案 https stackoverflow com questions 21527233 creat
  • 设置请求优先级齐射

    我正在尝试使用 Android 中的 Volley 库设置请求的优先级 我不知道如何设置请求优先级 StringRequest request new StringRequest Request Method GET feed URL vo
  • 何时使用转换或转换

    我很想知道演员表和演员表之间有什么区别int与使用相比Convert ToInt32 使用它是否会带来某种性能提升 另外 每种情况应该用于哪些情况 目前我更倾向于使用Convert但我没有理由走任何一条路 在我看来 他们都实现了同一个目标
  • 我们如何改变tableview标题的字体?

    我正在为 tabelView 使用一些背景颜色 并且样式已分组 各部分标题中的文本不清楚 因此我需要修改文本颜色 以便标题文本应该可见 我想知道我们可以更改标题文本的颜色和大小吗 添加 terente 的答案 UIView tableVie
  • 如何仅在过去 365 天使用 group by 对 pandas 数据框执行滚动求和

    尝试计算 p id 仅过去 365 天的滚动总和 创建一个包含此滚动总和的新列 具有新列的数据框应如下所示 Date p id points roll sum 2016 07 29 57 11 11 2016 08 01 57 9 20 2
  • ag-grid valueFormatter 函数的自定义参数

    我可以将自定义参数传递给 ag grid valueFormatter 函数吗 喜欢 valueFormatter PercentageFormatter params 10 如果是 那么需要传递什么作为第一个参数来获取单元格值 Funct
  • 包含多种 Java 类型的表上的 DynamoDBMapper

    我有一个 DynamoDB 表 其中包含不止一种类型的逻辑实体 我的表存储 员工 和 组织 并在两者之间创建多对多关系 我正在努力解决如何使用 DynamoDBMapper 对实体和表进行建模 特别是在尝试编写将返回员工和组织的查询时 在我
  • 如何从phonegap android插件返回数组或其他集合元素类型

    这是我在 java 插件中测试代码的一部分 我正在使用phonegap 2 7 public boolean execute String action JSONArray args CallbackContext callbackCont
  • Requirejs - 在加载 data-main 之前配置 require

    我们第一次使用 requirejs 我在构建依赖项时遇到了麻烦 我已将主 app js 文件定义为 index html 中的 data main 属性 但是 我有一个文件定义了所有需要的路径 垫片配置 并且我希望它在 app js 文件之
  • 我可以使用 git 的脚本化提交模板吗?

    我们正在处理票证 当我们在第一行的 git 提交消息中使用票证编号时 票证就会使用提交消息进行更新 为了简单起见 我们总是在带有提交号的分支上工作 现在我想看到一条提交消息 其中票号已被填写 这一定是可能的 因为分支已经在提交模板中 但在被
  • 高效的弦修剪

    我有一个String价值 我想要trim https doc rust lang org stable std string struct String html method trim它 我可以做类似的事情 let trimmed s t