Проверка регистра

Стэнфорд

Потрачен
Автор темы
1,058
543
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Версия MoonLoader
.027.0-preview
Приветик, как из сообщения человека (уже записано в переменную) понять, содержит ли его сообщение капс или нет?
 
Решение
Не сложно написать часть скрипта готовую? Я не очень понимаю
Пример для исходящих сообщений.
Lua:
local samp = require 'lib.samp.events'

local function upper_count(s)
  local count = 0
  for c in string.gmatch(s, '[A-ZА-Я]') do
      count = count + 1
  end
  return count
end

local function caps_coefficient(s, length)
    return upper_count(s) / length
end

function samp.onSendChat(text)
    local length = string.len(text)
    if caps_coefficient(text, length) > 0.5 and length > 1 then
        sampAddChatMessage('Сообщение ' .. text .. ' похоже на капс', -1)
    else
        sampAddChatMessage('Сообщение ' .. text .. ' не содержит капса', -1)
    end
end

memir

🇷🇺
Всефорумный модератор
339
611
Приветик, как из сообщения человека (уже записано в переменную) понять, содержит ли его сообщение капс или нет?
Точно никак. Можно эвристически - посчитай количество больших букв в тексте, раздели на длину текста. Если соотношение больше какого-нибудь уровня, например 0.5, то можно пометить его как капс
 

Стэнфорд

Потрачен
Автор темы
1,058
543
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Точно никак. Можно эвристически - посчитай количество больших букв в тексте, раздели на длину текста. Если соотношение больше какого-нибудь уровня, например 0.5, то можно пометить его как капс
Звучит неплохо, но как посчитать длину текста/кол-во больших символов?
 

Стэнфорд

Потрачен
Автор темы
1,058
543
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
string.len,
Lua:
local function upper_count(s)
  local count = 0
  for c in string.gmatch(s, '[A-ZА-Я]') do
      count = count + 1
  end
  return count
end
можно вообще это одним проходом подсчитать, а потом просто поделить
Не сложно написать часть скрипта готовую? Я не очень понимаю
 

memir

🇷🇺
Всефорумный модератор
339
611
Не сложно написать часть скрипта готовую? Я не очень понимаю
Пример для исходящих сообщений.
Lua:
local samp = require 'lib.samp.events'

local function upper_count(s)
  local count = 0
  for c in string.gmatch(s, '[A-ZА-Я]') do
      count = count + 1
  end
  return count
end

local function caps_coefficient(s, length)
    return upper_count(s) / length
end

function samp.onSendChat(text)
    local length = string.len(text)
    if caps_coefficient(text, length) > 0.5 and length > 1 then
        sampAddChatMessage('Сообщение ' .. text .. ' похоже на капс', -1)
    else
        sampAddChatMessage('Сообщение ' .. text .. ' не содержит капса', -1)
    end
end