如何使用gsub
删除前24个字符?如何使用gsub从日志中删除前24个字符?
2016-08-03 09:49:07,701 [DEBUG] Rector: Common\BasePage, OnInit BEGIN.
我想只有以下:
[DEBUG] Rector: Common\BasePage, OnInit BEGIN
如何使用gsub
删除前24个字符?如何使用gsub从日志中删除前24个字符?
2016-08-03 09:49:07,701 [DEBUG] Rector: Common\BasePage, OnInit BEGIN.
我想只有以下:
[DEBUG] Rector: Common\BasePage, OnInit BEGIN
line = "2016-08-03 09:49:07,701 [DEBUG] Rector: Common\BasePage, OnInit BEGIN."
要第一[
之前删除一切:
# Note the use of #sub instead of #gsub, as it will only match once
line.sub /\A[^\[]*/, ''
# => "[DEBUG] Rector: CommonBasePage, OnInit BEGIN."
您还可以使用正则表达式指数得到的一切,从第一个[
:
line[/\[.*/]
# => "[DEBUG] Rector: CommonBasePage, OnInit BEGIN."
如果您知道时间戳前缀始终是24个字符长,使用切片:
line[24..-1]
# => "[DEBUG] Rector: CommonBasePage, OnInit BEGIN."
这通过gsub
删除前24个字符。
'2016-08-03 09:49:07,701 [DEBUG] Rector: Common\BasePage, OnInit BEGIN.'.gsub(/\A.{24}/, '')
# => "[DEBUG] Rector: Common\\BasePage, OnInit BEGIN."
gsub
是不是真的在一个字符串的开始删除n个字符一个不错的选择。您应该简单地提取字符并继续前进,而不是进行搜索并替换掉字符。
删除字符的最简单方法是分配给一个字符串切片:
str = 'foo bar'
str[0, 4] = ''
str # => "bar"
或者,也可以切片,并从字符串提取字符:
str = 'foo bar'
str[4 .. -1] # => "bar"
如果你想慢你的代码,因为你发现你没有使用足够的CPU时间,你可以使用正则表达式:
str = 'foo bar'
str[/^.{4}(.+)/, 1] # => "bar"
如果使用gsub
坚持:
str = 'foo bar'
str.gsub(/^.{4}/, '') # => "bar"
然而,使用gsub
因为这是没有那么快,或有效率,因为sub
这将做同样的:
str = 'foo bar'
str.sub(/^.{4}/, '') # => "bar"
请阅读“[问]”。我们希望看到您解决问题的努力,但看起来您希望我们为您编写代码。另外,为什么它必须是'gsub'?有更好的方法来做到这一点。 http://stackoverflow.com/q/3614389/128421是密切相关的。 –