content = " a big nasty chunk of something
that's been pasted from a webpage or something and looks
like this
"
content.gsub(/\s+/, " ").strip
#=> "a big nasty chunk of something that's been pasted from a webpage or something and looks like this"
108
Ruby的 .scan() 和 .join() 方法也可以帮助克服字符串中的空格 .
scan(/\w+/).join 将删除所有空格并加入字符串
string = "White spaces in me".scan(/\w+/).join
=>"Whitespacesinme"
它还从字符串的左右部分移除空间 . 意味着 ltrim , rtrim 和 trim . 以防万一有人背景 C , FoxPro 或 Visual Basic 并跳入 Ruby .
2.1.6 :002 > string = " White spaces in me ".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :003 > string = " White spaces in me".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :004 > string = "White spaces in me ".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :005 >
对于与PHP trim 完全匹配的行为,最简单的方法是使用 String#strip 方法,如下所示:
string = " Many have tried; many have failed! "
puts "Original [#{string}]:#{string.length}"
new_string = string.strip
puts "Updated [#{new_string}]:#{new_string.length}"
a = "\tI have some whitespaces.\t"
a.gsub!(/\s/, '') #=> "Ihavesomewhitespaces."
a.gsub!(/ /, '') #=> "\tIhavesomewhitespaces.\t"
a.delete!(" ") #=> "\tIhavesomewhitespaces.\t"
a.delete!("/\s/") #=> "\tIhavesomewhitespaces.\t"
a.delete!('/\s/') #=> using single quote is unexpected, and you'll get "\tI have ome whitepace.\t"
21 回答
也别忘了:
并模拟PHP的
trim()
函数:这有点晚了,但是搜索此页面的任何人都可能对此版本感兴趣 -
如果您要清理一大块预先格式化的文本,用户可能会以某种方式剪切并粘贴到您的应用中,但保留字间距,请尝试以下操作:
Ruby的
.scan()
和.join()
方法也可以帮助克服字符串中的空格 .scan(/\w+/).join
将删除所有空格并加入字符串它还从字符串的左右部分移除空间 . 意味着
ltrim
,rtrim
和trim
. 以防万一有人背景C
,FoxPro
或Visual Basic
并跳入Ruby
.2.1.6 :002 > string = " White spaces in me ".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :003 > string = " White spaces in me".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :004 > string = "White spaces in me ".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :005 >
我会用这样的东西:
它将删除左侧和右侧空格 . 这段代码会给我们:
"Raheem Shaik"
我个人的偏好是使用方法
.tr
如:
感谢@FrankScmitt指出要删除所有空格(而不仅仅是空格),你需要这样写:
gsub方法会做得很好 .
可以在字符串上调用gsub方法并说:
gsub方法搜索第一个参数的每个匹配项,并用第二个参数替换它 . 在这种情况下,它将替换字符串中的每个空格并将其删除 .
另一个例子:
让我们用大写字母“T”替换字母“t”的每一个出现
如果你只想删除前导空格和尾随空格(比如PHP的修剪)你可以使用
.strip
,但是如果你想删除 all 空格,你可以使用.gsub(/\s+/, "")
代替 .你可以试试这个:
为了得到这个:
或者如果你想要一个字符串,只需使用:
您可以使用
squish
方法 . 它删除字符串两端的空白区域,并将多个空格分组到单个空格 .例如 .
将导致:
检查this reference from api.rubyonrails.org .
编辑:它只适用于铁轨上的红宝石
删除工作更快=)
String#strip - 从开头和结尾删除所有空格 .
String#lstrip - 从一开始 .
String#rstrip - 就在最后 .
String#chomp(不带参数) - 从末尾删除行分隔符(
\n
或\r\n
) .String#chop - 删除最后一个字符 .
String#delete -
x.delete(" \t\r\n")
- 删除所有列出的空格 .String#gsub -
x.gsub(/[[:space:]]/, '')
- 删除所有空格,包括unicode ones .Note :上述所有方法都返回一个新字符串,而不是改变原始字符串 . 如果要更改字符串,请在末尾使用
!
调用相应的方法 .你可以试试这个
使用 :space: 删除非破坏空间以及常规空间 .
Ruby的
.strip
方法执行等效于trim()
的PHP .要删除所有空格:
@Tass让我知道我的原始答案连续删除了重复的字母 - 你好!我已经改用了squish方法,如果使用Rails框架,这种方法更聪明 .
引用:http://apidock.com/rails/String/squish
我试图这样做,因为我想在视图中使用记录“title”作为id,但 Headers 有空格 .
一个解决方案是:
对于与PHP
trim
完全匹配的行为,最简单的方法是使用String#strip
方法,如下所示:Ruby也有一个就地编辑版本,名为
String.strip!
(注意尾随'!') . 这不需要创建字符串的副本,并且对于某些用途可以明显更快:两个版本都生成此输出:
我创建了一个基准来测试
strip
和strip!
的一些基本用途的性能,以及一些替代方案 . 测试是这样的:结果如下:
使用gsub或删除 . 不同的是gsub可以删除标签,而删除不能 . 有时,您确实在编辑器添加的文件中有选项卡 .
相关回答:
回报
split.join
会爆炸字符串中任何位置的所有空格 .它很容易输入和记忆,所以它在控制台和快速黑客上都很好 . 可以说严格的代码不受欢迎,因为它掩盖了意图 .
(根据Piotr在上述Justicle's answer中的评论 . )