【发布时间】:2014-12-09 17:32:43
【问题描述】:
- 红宝石 2.1.3
- 导轨 4.1.7
我想从 textarea 生成一个无序列表。所以我必须保留每个项目的所有换行符并删除前导和尾随空格。
好吧,我正在尝试从 textarea 的每一行 中删除所有前导和尾随空格,但没有成功。
我正在使用正则表达式:
string_from_textarea.gsub(/^[ \t]+|[ \t]+$/, '')
我也尝试过 strip 和 rstrip rails 方法,但也没有成功(它们的结果与正则表达式相同):
- 每行的前导空格已被完美删除。
- 但对于尾随空格,仅删除字符串中的最后一个空格。但我想为每一行。
我在这里缺少什么?每行的 textarea 和尾随空格是怎么回事?
更新
一些代码示例:
我正在使用回调来保存格式化数据。
after_validation: format_ingredients
def format_ingredients
self.ingredients = @ingredients.gsub(/^[ \t]+|[ \t]+$/, "")
end
表单视图:
= f.text_area :ingredients, class: 'fieldW-600 striped', rows: '10'
【问题讨论】:
-
试试
/^[^\S\r\n]+|[^\S\r\n]+$/m -
最后会不会有一些非ASCII字符?试试这个并报告:
line[-5,-1].encode('utf-8').each_char { |c| puts c.ord }. -
@sin 同样的结果,不幸的是
-
很奇怪,因为
\s应该涵盖所有 Unicode 中断,而[^\S]等于\s。您是否在 Unicode 模式下使用正则表达式?也许是//u或其他东西(不懂Java)。 -
@CarySwoveland 不,我只使用拉丁字母和数字。您的代码为 nil:NilClass 返回了未定义的方法“编码”。我已经用更多信息更新了我的问题。谢谢!
标签: ruby-on-rails ruby regex ruby-on-rails-4