Как на самом деле написать новую строку в строку
Как я могу сделать это
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
который экранирует символ новой строки, который я не ожидал бы работать на любой платформе.