在Ruby中,有时我需要删除字符串开头的新行字符.目前,我所做的就是以下内容.我想知道最好的方法.谢谢.
s = "\naaaa\nbbbb"
s.sub!(/^\n?/, "")
Run Code Online (Sandbox Code Playgroud)
Mic*_*ohl 22
lstrip 似乎是你想要的(假设应该保留尾随空格):
>> s = "\naaaa\nbbbb" #=> "\naaaa\nbbbb"
>> s.lstrip #=> "aaaa\nbbbb"
Run Code Online (Sandbox Code Playgroud)
来自文档:
返回删除了前导空格的str副本.另请参见String#rstrip和String#strip.
http://ruby-doc.org/core-1.9.3/String.html#method-i-lstrip
fl0*_*00r 11
strip 将删除所有尾随空格
s = "\naaaa\nbbbb"
s.strip!
Run Code Online (Sandbox Code Playgroud)
小黑客扼杀领先的空白:
str = "\nmy string"
chomped_str = str.reverse.chomp.reverse
Run Code Online (Sandbox Code Playgroud)
Ita*_*dev 11
准确地说,chomp不仅可以删除字符串末尾的空格,还可以删除任意字符。
如果寻求后一种功能,可以使用:
'\naaaa\nbbbb'.delete_prefix( "\n" )
Run Code Online (Sandbox Code Playgroud)
与此相反,strip这适用于任意字符,就像chomp.
所以,只是有点澄清,有三种方法,你可以去一下:sub,reverse.chomp.reverse和lstrip.
我建议反对,sub因为它的可读性稍差,但也因为它的工作原理:通过创建一个继承旧字符串的新字符串.另外,你需要一个非常简单的正则表达式.
所以,那么你到reverse.chomp.reverse和lstrip.最有可能的,你要lstrip因为它是一个有点快,但要记住的是,strip操作是不一样的chomp操作.strip将删除所有主要换行符和空格:
"\n aaa\nbbb".reverse.chomp.reverse # => " aaa\nbbb"
"\n aaa\nbbb".lstrip # => "aaa\nbbb"
Run Code Online (Sandbox Code Playgroud)
如果您想确保只删除一个字符并且它肯定是换行符,请使用该reverse.chomp.reverse解决方案.如果你考虑所有领先的新行和空白垃圾,请继续lstrip.
我可以想到使用正则表达式的一种情况是,如果你在开头有一个未知数量的\rs和\ns并想要修剪它们但是避免触及任何空格.您可以使用循环和更多的String方法进行修剪,但这只会更加丑陋.性能影响并不重要.
| 归档时间: |
|
| 查看次数: |
15026 次 |
| 最近记录: |