用 Ruby/Rails 中字符串前面的多个空格字符替换行首

Sah*_*lly 3 ruby regex ruby-on-rails

我正在尝试在字符串开头的新行中追加 10 个空格:

string = "\nHello"
Run Code Online (Sandbox Code Playgroud)

应改为:

"\n           Hello"
Run Code Online (Sandbox Code Playgroud)

尝试了以下和其他方式但徒劳无功

string.gsub!("\n", "\n(\s){10}")
#=> "\n( ){10}Hello"
Run Code Online (Sandbox Code Playgroud)

string.gsub!("\n", "\n[\s]{10}")
#=> "\n[ ]{10}Hello"
Run Code Online (Sandbox Code Playgroud)

Seb*_*lma 5

您可以使用 gsub,保留匹配的元素并附加“n”个空格。

string = "\nHello"
p string.gsub(/\n/) { |match| "#{match}#{' ' * 20}" }
# "\n                    Hello"
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想替换它们:

string.gsub(/\n/, ' ' * 20)
Run Code Online (Sandbox Code Playgroud)

如果要将 \n 限制为字符串中的第一个字符,则 gsub 的第一个参数将是\A\n.

我认为对您尝试的更准确的是:

string.gsub(/(\n)/, "#{$1}#{' ' * 20}")
Run Code Online (Sandbox Code Playgroud)

或者,如果知道 \n 可以在任何地方并且您只关心附加 X \s:

string.gsub(/\n/, "\n#{"\s" * 20}")
Run Code Online (Sandbox Code Playgroud)