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

标签 ruby arrays string whitespace

编辑:我通过使用 strip! to remove leading and trailing whitespaces as I show in this video 解决了这个问题.然后,我通过遍历并添加空格来恢复每个字符串末尾的空格。这个问题与“欺骗”不同,因为我的意图是在末尾保留空白。然而,剥离!如果这是您的意图,将删除前导和尾随空格。 (我会把它作为一个答案,但由于它被错误地标记为欺骗,我只能编辑我的原始问题以包含它。)

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

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(或 String#lstrip!)是 what you're after .

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(", ")split(/, */) (或/, ?/ 如果最多有一个空格)

所以现在它看起来像:

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

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

编辑:好的,开始吧:

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

使用的方法有String#splitEnumerable#mapEnumerable#rejectArray#flatten .

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

关于Ruby:删除字符串开头的空白字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5829051/

相关文章:

c# - 如何在 C# 中正确处理字符串?

ruby - 将带空格的值传递给 Ruby 脚本

ruby-on-rails - DelayedJob 有时无法加载具有命名空间的作业类

ruby - 如何使用 Ruby 提取 .rar 文件?

ruby-on-rails - 运行 rake 命令时出错

ios - Objective C 创建未知大小的二维数组并访问它

c++ - 将数组拆分为单独的正数组和负数组 C++

php - 有效地对多个 PHP foreach 循环使用相同的代码

c++ - 如何正确声明和初始化一个字符数组?

java - Java 中的字符串联合