Перейти к содержимому
  • 0
Laine_prikol

Вытащить из переменной количество букв

Вопрос

Как вытащить из переменной количество букв которые мне нужны например:

text = "teext"
t = количество букв t в переменной text
e = количество букв e в переменной text

Ну и так далее...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

Просто вбиваешь в гугле "lua string" и первый сайт который он тебе предлагает мне часто помогал, вот http://lua-users.org/wiki/StringLibraryTutorial

Там расписаны функции стандартной библиотеки string, для работы с текстом. И там есть то, что тебе нужно. Но постарайся хоть это сделать сам. Там даже примеры работы функций есть.

Как я понял тебе нужно узнать количество букв в фразе, пройти по ним брутом (в цикле) и записать в таблицу сколько какая буква использовалась.

Всё это реализуемо.

 

На ряду с библиотекой string, мне часто бывает полезна библиотека math. Просто имей ввиду, что в этой библиотеки есть все полезные математические функции. Гугл отлично выдаёт документацию по этим библиотекам.

Изменено пользователем qwertyMAN

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как я понял тебе нужно узнать количество букв в фразе, пройти по ним брутом (в цикле) и записать в таблицу сколько какая буква использовалась.

Годное решение для низкоуровневых языков, но в Lua все вызовы обходятся дорого, как бы быстро они не выполнялись. Поэтому в данном случае более предпочтительным будет использовать string.find от позиции последнего вхождения. Такое решение позволит уменьшить количество необходимых итераций с общего количества букв в строке до количества искомых букв и плюс еще одной итерации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как вытащить из переменной количество букв которые мне нужны например:

text = "teext"
t = количество букв t в переменной text
e = количество букв e в переменной text

Ну и так далее...

str = 'tyUyyyUUaaattrrUUuu'
count = 0
for l in str:gmatch('U') do
  count = count + 1
end
print(count)       

---------------------------
--> 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

str = 'tyUyyyUUaaattrrUUuu'
count = 0
for l in str:gmatch('U') do
  count = count + 1
end

 

gmatch хорош, но этот код завершится ошибкой при попытке найти символ, имеющий для gmatch специальное значение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

str = 'tyUyyyUUaaattrrUUuu'
symbols = {}
for l in str:gmatch('%w') do
symbols[l] = (symbols[l] or 0) + 1
end
for l,n in pairs(symbols) do
print(l.." = "..n)
end

Поделиться сообщением


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

согласен. Вариант, дополненный Zer0  - безопасный, где поиск по шаблону аккуратно ведется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...