Ruby:删除字符串开头的空白字符

2024-01-06

编辑:我通过使用解决了这个问题strip! to 删除前导和尾随空格,如我在该视频中所示 https://www.youtube.com/watch?v=Ef_hGfJGt3U。然后,我通过迭代并添加空格来恢复数组每个字符串末尾的空格。这个问题与“欺骗”不同,因为我的目的是保留末尾的空格。然而,脱衣!如果您愿意的话,将删除前导和尾随空白。 (我本来可以将此作为答案,但由于这被错误地标记为欺骗,我只能编辑我原来的问题以包含此内容。)

我有一个单词数组,我试图删除单词开头而不是结尾处可能存在的任何空格。 rstrip!只处理字符串的结尾。我想从字符串的开头删除空格。

example_array = ['peanut', ' butter', 'sammiches']
desired_output = ['peanut', 'butter', 'sammiches']

正如您所看到的,并非数组中的所有元素都有空格问题,因此我不能像所有元素都以单个空格字符开头那样删除第一个字符。

完整代码:

words = params[:word].gsub("\n", ",").delete("\r").split(",")
words.delete_if {|x| x == ""}
words.each do |e|
  e.lstrip!
end

用户可以在表单上输入的示例文本:

Corn on the cob,
Fibonacci,
StackOverflow
Chat, Meta, About
Badges
Tags,,
Unanswered
Ask Question

String#lstrip (or String#lstrip!) is 你在追求什么 http://www.ruby-doc.org/core/classes/String.html#M001190.

desired_output = example_array.map(&:lstrip)

关于您的代码的更多评论:

  1. delete_if {|x| x == ""}可以替换为delete_if(&:empty?)
  2. 除非你愿意reject!因为delete_if只会返回一个不同的数组,而不是修改现有的数组。
  3. words.each {|e| e.lstrip!}可以替换为words.each(&:lstrip!)
  4. delete("\r")如果您在 Windows 机器上阅读 Windows 风格的文本文档,或者在 Unix 机器上阅读 Unix 风格的文档,则应该是多余的
  5. split(",")可以替换为split(", ") or split(/, */) (or /, ?/如果最多应该有一个空格)

所以现在看起来像:

words = params[:word].gsub("\n", ",").split(/, ?/)
words.reject!(&:empty?)
words.each(&:lstrip!)

如果您有可用的示例文本,我可以提供更多建议。

Edit: 好的,这里是:

temp_array = text.split("\n").map do |line|
  fields = line.split(/, */)
  non_empty_fields = fields.reject(&:empty?)
end
temp_array.flatten(1)

使用的方法有String#split, Enumerable#map, Enumerable#reject and Array#flatten.

Ruby 也有用于解析逗号分隔文件的库,但我认为它们在 1.8 和 1.9 之间有点不同。

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

Ruby:删除字符串开头的空白字符 的相关文章

随机推荐

  • sig_atomic_t 实际上是如何工作的?

    编译器或操作系统如何区分 sig atomic t 类型和普通 int 类型变量 并确保操作是原子的 使用两者的程序具有相同的汇编代码 如何额外注意使操作原子化 sig atomic t不是原子数据类型 它只是允许您在信号处理程序上下文中使
  • Python 中使用列表扩展的意外行为[重复]

    这个问题在这里已经有答案了 我试图了解Python中的extend是如何工作的 但它并没有完全达到我的预期 例如 gt gt gt a 1 2 3 gt gt gt b 4 5 6 extend a gt gt gt b gt gt gt
  • AngularJS 中 $scope.$apply 的“this”等价物是什么?

    在 AngularJS 中 有两种编写控制器的风格 控制器作为语法 和 附加到 scope 风格的控制器 两者都引用自ngController 文档 https docs angularjs org api ng directive ngC
  • bash 循环中按设定量递增

    我知道如何在 bash 中执行每次增加 1 的循环 但假设我的范围是 1 到 773 并且我想从循环中输出一个范围 以便在每次迭代中获得两个变量 第一个为 1 第二个为 19 在第二次迭代中 第一个为 20 第二个为 39 我一直在玩类似的
  • Java 泛型帮助:无法使用“Object”作为“? extends Object”的参数

    我有以下代码 import java util public class SellTransaction extends Transaction private Map
  • 如何通过应用程序获取有关 Android 电池使用情况的信息

    如何获取 Android 中每个应用程序的电池使用情况 我需要知道应用程序消耗的电池百分比 可以使用SDK吗 我需要的是 Android 设备上 设置 gt 关于手机 gt 电池使用 下提供的信息 但适用于特定应用程序 Thanks 这个项
  • 如何使用 StreamWriter 在 C# 中编辑文本文件?

    我有一种方法可以从文本文件中编辑单词并将其显示在命令提示符上 现在我尝试创建一种方法来编辑文本文件中的单词并将其写入新文件 我还想提一下 我无法使用 File 或 Regex 类 因为我不允许将它用于我的作业 这是我的 StreamRead
  • Slurm - 如何使用所有可用的 CPU 来执行独立任务?

    我的问题和这个问题类似 利用 SLURM 上的所有 CPU https stackoverflow com questions 57466957 make use of all cpus on slurm 长话短说 我想在尽可能多的节点上使
  • 指定多个子句 underscore.js

    我正在使用 underscore js 来过滤 JSON 数组 我找不到一种在 where 方法中组合多个子句的方法 ps 我正在过滤字符串属性 是否可以 正如对您问题的评论中所述 您似乎正在尝试filter一个数组OR操作 这是不可能使用
  • NHibernate Session.Evict 的作用是什么?

    下面的代码片段有什么作用 为什么使用Evict private void DoEvict customer cust AddressRepository Evict cust Address cust Address AddressRepo
  • 如何在 ng-if 和变量中使用过滤器?

    在此示例中 我在ng repeat https docs angularjs org api ng directive ngRepeat 但是我如何在变量中使用它并且ng if 就像是 languages length filter ava
  • 测试驱动的异步任务

    我正在寻找有关该主题的一般想法和 或链接 尽管我目前的具体动机是与使用 BackgroundWorker 和 或 TPL 进行进度报告相关的 UI 任务 我对异步编程的经验总体来说是新手 我最熟悉的测试工具是NUnit和Rhino 我头脑中
  • Oracle 数字列中有2个连字符?

    我有一个 Oracle 表 版本 8i 我需要将其迁移到 sql server 其中一列是 NUMBER 数据类型 其中 它具有如下值 1331013400000000000000000000 13310179036171773603000
  • Windows Ribbon Framework:如何更改字体和大小?

    如何更改所使用的字体和字体大小Windows 功能区框架 https learn microsoft com en us windows win32 windowsribbon uiplat windowsribbon entry的 UIR
  • 检查 bash 中的空字符串

    下面的测试有什么区别吗 STRING exit 1 x STRING x exit 1 z STRING exit 1 不 它们都是一样的 但需要养成一些防守习惯 你应该引用 STRING in the z也有一个 如果您使用 u 选项运行
  • java 和 R 与 Rserve 的连接

    我有用于分析的java应用程序 需要安装R 我的系统中还安装了 R 并且安装了 Rserve 库 但是当我尝试在 R 控制台中实现命令 Rserve 时 出现以下错误 SOCK ERROR 绑定错误 98 地址已在使用中 我已经安装了我的
  • virtualenv:在 Mac 上使用 Pip 安装后找不到命令[重复]

    这个问题在这里已经有答案了 我正在尝试在我的 Mac 上安装 VirtualEnv 我已经用brew安装了Python和Pip 运行后 pip 安装虚拟环境 当我尝试使用它时 我得到 bash virtualenv command not
  • 如何在fork()创建的进程之间共享内存?

    在fork子进程中 如果我们修改一个全局变量 它不会在主程序中改变 有没有办法更改子叉中的全局变量 include
  • stage.addChild 和分层

    我有一个简单的功能 当您单击按钮时 会随机将影片剪辑添加到舞台上x and y位置 我遇到的问题是新的影片剪辑最终会掩盖按钮 我尝试将新创建的影片剪辑的 z 索引更改为低于按钮的 z 索引 但这并不能解决问题 如何阻止新的影片剪辑覆盖已经存
  • Ruby:删除字符串开头的空白字符

    编辑 我通过使用解决了这个问题strip to 删除前导和尾随空格 如我在该视频中所示 https www youtube com watch v Ef hGfJGt3U 然后 我通过迭代并添加空格来恢复数组每个字符串末尾的空格 这个问题与