Разделение / подсчет строк в строке - PullRequest
1 голос
/ 21 апреля 2019

Я сейчас программирую редактор текстового концепта для computerCraft на Lua;одной особенностью будет подсчет строк.Как можно считать строки в строке или хотя бы считать символы новой строки?В идеале также должны быть номера строк на боковой стороне дисплея / терминала, которые могут работать с одним и тем же кодом.

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

Я понятия не имею, как это сделать, идеальным результатом будет массив со всеми строками текста, разделенными на разные записи;это решило бы обе проблемы;но может присутствовать больше «сделанных на заказ» вариантов

Надеюсь, с помощью я смогу добиться такого результата ...

1 |while true do
2 |sleep(0)
3 |write("Example")
4 |write("Script\n\n")
5 |end
:
PPPe Code Editor ~ 5 lines

... обновлять, когда что-то меняется

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Вы можете использовать string.gsub, так как он возвращает количество выполненных замен в качестве второго результата:

local _, replacements = string.gsub(text, "\n", "\n")

Обновление (22.04.19): Если вам нужно добавить номер строки вкаждой строке (первоначальный вопрос был о подсчете строк), тогда вы все равно можете использовать string.gsub, но вам нужно будет предоставить функцию, которая будет подсчитывать строки, например:

lines = 1
local text = "1 |"..string.gsub(text, "\n", function(s) lines = lines + 1 return s..lines.." |" end)
print(text)
print(lines)

Для вашеготекст, это будет печатать:

1 |while true do
2 |sleep(0)
3 |write("Example")
4 |write("Script\n\n")
5 |end
5
0 голосов
/ 22 апреля 2019

Начните со строки:

local str = "One sentence.\nAnother sentence.\nThe end."

Тогда:

local lines = {}
for line in (str):gmatch("[%a+%s]+") do 
    table.insert(lines, line) 
end

for i, line in ipairs(lines) do
    print("Line " .. i .. ": " .. line)
end

Будет напечатано:

Line 1: One sentence.
Line 2: Another Sentence.
Line 3: The end.

Вам может понадобиться настроить шаблон поиска для обработки строк с другими символами, но это хорошее упражнение для программиста.

...