高效的弦修剪

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(使用前将#替换为@)

高效的弦修剪 的相关文章

  • 是否可以在不使用连接器的情况下将 C# 变量包含在字符串变量中?

    NET 3 5 C 是否允许我们在字符串变量中包含变量 而无需使用 连接符 或 string Format 例如 在伪中 我使用 符号来指定变量 DateTime d DateTime Now string s The date is d
  • ANSI-C:打印十进制整数的最大字符数

    我想知道这是否是确定打印小数的最大字符数的简单方法int I know
  • 如何在 Rust 中从文字创建格式化字符串?

    我将根据给定的参数返回一个字符串 fn hello world name Option
  • 慢 Eclipse Spring STS 插件

    我是 Spring 新手 安装了 Eclipse STS 插件 使用服务似乎非常慢 CPU 使用率激增 笔记本电脑只会变热 实际上风扇就像喷气发动机一样运行 直接响应服务的启动 停止 虽然下面的内容确实为我解决了 Spring STS 的所
  • 我们可以使用什么方法来重塑非常大的数据集?

    当由于非常大的数据计算将花费很长时间并且因此我们不希望它们崩溃时 事先知道要使用哪种重塑方法是很有价值的 Lately methods for reshaping data have been further developed regar
  • 如何使用 Swift 4 将字符串拆分为英语和非英语?

    我有一个包含英语和阿拉伯语的字符串 我正在使用 API 这就是为什么我无法在其中设置指标的原因 我想要得到的是 阿拉伯语和英语分成两部分 这是一个示例字符串 Bismika rabbee wadaAAtu janbee wabika arf
  • 返回数组大小的关联常量[重复]

    这个问题在这里已经有答案了 考虑以下trait pub trait Representable const SIZE usize fn get self gt u8 SIZE fn set mut self value u8 SIZE 我想
  • 空 while 循环有什么影响?

    我知道这可能是一个有点 愚蠢 的问题 但有时 我只想循环直到条件为假 但我不喜欢让循环保持为空 所以代替 Visible true while IsRunning Visible false 我通常prefer while IsRunnin
  • Java 字符串可变性 - java.lang.NoSuchFieldException:偏移量

    我是 Java 新手 我看到了问答部分here http algs4 cs princeton edu 12oop 有两个删除可变性的示例 经测试可变字符串 java http algs4 cs princeton edu 12oop Mu
  • 非阻塞方法中的饥饿

    一段时间以来 我一直在阅读有关非阻塞方法的内容 这是一段所谓的无锁计数器的代码 public class CasCounter private SimulatedCAS value public int getValue return va
  • Golang中如何删除字符串的最后一个字符?

    我想删除字符串的最后一个字符 但在此之前我想检查最后一个字符是否是 如何才能做到这一点 以下是删除尾随加号的几种方法 package main import fmt strings func TrimSuffix s suffix stri
  • 只读有运行时开销吗?

    出于某种原因 我一直认为readonly字段有与其相关的开销 我认为这是 CLR 跟踪是否存在readonly字段是否已初始化 这里的开销是一些额外的内存使用量 用于跟踪状态以及分配值时的检查 也许我这么认为是因为我不知道readonly字
  • 是否有用于 C 字符串的标准 C++ 迭代器?

    有时我需要使用通用 C 迭代器范围接口将 C 字符串传递给函数 first last 是否有针对这些情况的标准 C 迭代器类 或者无需复制字符串或调用的标准方法strlen 编辑 我知道我可以使用指针作为迭代器 但我必须知道字符串在哪里结束
  • 这个 cProfile 结果告诉我需要修复什么?

    我想提高Python脚本的性能并且一直在使用cProfile生成性能报告 python m cProfile o chrX prof bgchr py args 我打开这个chrX prof使用 Python 的文件pstats并打印出统计
  • 在字符串中间添加一个字符

    可能有一个简单的解决方案可以解决这个问题 但会引起面部表情 我将时间存储为 4 个字符长的字符串 即 1300 我试图将该字符串显示为 13 00 我觉得必须有一个比我现在正在做的更优雅的解决方案 我目前有 startTime get fi
  • 比较运算符性能 <= 与 !=

    让我们首先声明代码可读性胜过微优化 我们应该将其留给编译器 这只是一个奇怪的案例 具体细节似乎与一般建议相比很有趣 因此 我在搞素数生成器函数 并提出了一种奇怪的行为 其中 人们建议效率最高 实际上效率最低 而 C private stat
  • 有没有一种方法可以“展平”Rust 中的(反)序列化枚举?

    我有一个由其他枚举组成的枚举 类似于以下内容 serde为简洁起见 省略了派生和注释 enum Main A SubA B SubB enum SubA X1 X2 X3 enum SubB Y1 Y2 Y3 我很想能够使用serde反序列
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • 用于选择特定 div 中具有特定类的锚元素的 jQuery 选择器是什么

    我有一些这样的代码 我想选择每个 a 带有类的标签status在 div 中foo div a class status a div 你可以这样做 foo find status a
  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任

随机推荐

  • 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