Как на самом деле написать новую строку в строку

Как я могу сделать это

content[i].gsub("\n", "\\n")

записать (что-то вроде) это в файл

str = "some text\n"

Я пишу кусок кода, чтобы взять файл и построить из него одну строку, которую можно вставить обратно в исходный код, с которым вы работаете, если это вообще поможет

Если я ошибаюсь и моя ошибка на самом деле где-то еще в коде, вот:

#!/bin/usr/ruby
#reads a file and parses into a single string declaration in language of choice
#another little snippet to make my job easier when writing lots of code
#programmed by michael ward
# h3xc0ntr0l@gmail.com | gists.github.com/michaelfward


# ***************************************
#              example scrips
#  with writefiles 
#   | writefiles [file with paths] [file to write*]
#   | makestring [file to write* (actually is read, but same as above)] [lang] 
#****************************************


def readFile(path)
  fd = File.open(path, "r")
  content = []
  fd.each_line {|x| content.push(x)}
  content = fixnewlines(content)
  str = content.join()
  str
end

def fixnewlines(content)
  content.each_index do |i|
    content[i].gsub("\n", "\\n")
  end
end

def usage
  puts "makestring [file to read] [language output]"
  exit
end

langs = {"rb"=>"str =", "js" => "var str =", "c"=> "char str[] ="}

usage unless ARGV.length == 2
lang = ARGV[1]
path = ARGV[0]
str = readFile(path)
if langs[lang] == nil
  if lang == "c++" || lang == "cpp" || lang == "c#"
    puts "#{lang[c]}#{str}"
  else
    puts "unrecognized language found. supported languages are"
    langs.each_key {|k| puts "   #{k}"}
    exit
  end
else
  puts "#{langs[lang]} #{str}"
end

2 ответа

Решение

Просто удали fixnewlines и изменить readFile:

def readFile(path)
  File.read(path).gsub("\n", '\n')
end

Надеюсь, поможет. На винде используй \r\n вместо \n, Нет необходимости избегать косых черт внутри одинарных скобок.

Это зависит от того, какую платформу вы используете. Unix использует \n в качестве символов окончания строки, тогда как Windows использует \r\n, Похоже, вы заменяете все символы новой строки хотя \\n который экранирует символ новой строки, который я не ожидал бы работать на любой платформе.

Другие вопросы по тегам