|
|
|
Нужен скриптик на руби, что бы он из текстового файла (напр. in.txt) вставлял произвольную строку в другой файл (out.txt) вместо определенного слова (напр. test1) |
|
|
|
|
|
Вот держи
Код: |
subs = "test1" # Заменяемое слово
lines = IO.readlines("in.txt")
text = IO.read("out.txt")
resultText = ""
resultFile = File.open("out.txt", "w")
charIndex = 0
lineIndex = rand(lines.length)
while charIndex < text.length
if text[charIndex,subs.length] == subs
resultText = resultText + lines[lineIndex].chomp
charIndex = charIndex + subs.length
else
resultText = resultText + text[charIndex,1]
charIndex = charIndex + 1
end
end
resultFile.print(resultText)
resultFile.close
|
|
|
|
|
|
|
Спасибо GetLucky то что нужно, только вот если в файле(out.txt) несколько слов test1 то скрипт заменяет на одинаковые значения из файла(in.txt), а хотелось что бы он вставлял разные строки. |
|
|
|
|
|
Пожалуйста
Тогда вот так:
Код: |
subs = "test1" # Заменяемое слово
lines = IO.readlines("in.txt")
text = IO.read("out.txt")
resultText = ""
resultFile = File.open("out.txt", "w")
charIndex = 0
while charIndex < text.length
if text[charIndex,subs.length] == subs
resultText = resultText + lines[rand(lines.length)].chomp
charIndex = charIndex + subs.length
else
resultText = resultText + text[charIndex,1]
charIndex = charIndex + 1
end
end
resultFile.print(resultText)
resultFile.close
|
Для каждой замены берётся случайная строка из in.txt, но она необязательно будет уникальной.
Если критична уникальность, то тогда так:
Код: |
subs = "test1" # Заменяемое слово
lines = IO.readlines("in.txt")
text = IO.read("out.txt")
resultText = ""
resultFile = File.open("out.txt", "w")
charIndex = 0
while charIndex < text.length
if text[charIndex,subs.length] == subs
currentLine = lines[rand(lines.length)]
resultText = resultText + currentLine.chomp
if lines.length > 1
lines.delete(currentLine)
else
lines = IO.readlines("in.txt")
end
charIndex = charIndex + subs.length
else
resultText = resultText + text[charIndex,1]
charIndex = charIndex + 1
end
end
resultFile.print(resultText)
resultFile.close
|
Этот скрипт выбирает случайную строку, заменяет ею слово, а затем удаляет её из списка (если есть в списке ещё такие же строки - их тоже прибьёт). Затем всё повторяется. Если строки закончатся раньше времени, то список будет восстановлен в исходное положение. |
|
Последний раз редактировалось: GetLucky (Ср Сен 17, 2008 11:30 am), всего редактировалось 1 раз |
|
|
|
|
О! Рубероидов становится на форуме больше! |
|
|
|
|
|
Не без твоего участия Вацлав |
|
|
|
|
|
Спасибо GetLucky все работает |
|
|
|
|
|
|
|