Код Lua, если не работает - PullRequest
0 голосов
/ 06 мая 2018

Это все о принятии ввода от пользователя и поиска с этим конкретным текстом.

Игра с string.gsub.

io.write("ENTER ANY STORY :-D ")
story=io.read()
io.write("\t OKAY!, THAT'S NICE :-D  ")
io.write("\t DO YOU WANT TO REPLACE ANY TEXT:?  ")
accept=io.read()
if accept=="YES" or "yes" then
  io.write("\t WHICH TEXT TO REPLAE?  ")
  replace=io.read()
  --HERE IS THE REPLACING TEXT
  io.write("\t WITH WHAT:?   ")
  with=io.read()
  result=string.gsub(story,replace,with)
  print("\t THE REPLACED TEXT IS: ",result)
elseif accept=="NO" or "no" then
  print(result)
end

Ошибка: elseif цикл не работает !!

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Попробуйте это ..

io.write("ENTER ANY STORY :-D ")
story=io.read()
io.write("\t OKAY!, THAT'S NICE :-D  ")
io.write("\t DO YOU WANT TO REPLACE ANY TEXT:?  ")
accept=io.read()
if accept=="YES" or accept == "yes" then
  io.write("\t WHICH TEXT TO REPLAE?  ")
  replace=io.read()
  --HERE IS THE REPLACING TEXT
  io.write("\t WITH WHAT:?   ")
  with=io.read()
  result=string.gsub(story,replace,with)
  print("\t THE REPLACED TEXT IS: ",result)
elseif accept=="NO" or accept == "no" then
  print(result)
end
0 голосов
/ 06 мая 2018

== и or работают как математические операторы в том смысле, что они оцениваются по одному, а == вычисляется первым. Если accept равно 'no', accept=="YES" or "yes" будет оцениваться так:

(accept == "YES") or "yes"
('no' == "YES") or "yes"
false or "yes"
"yes"

В Lua все значения, кроме nil и false, являются правдивыми, поэтому ваш блок if всегда будет работать вместо вашего elseif блока.

Как сказано в комментариях, accept:upper()=="YES" это исправит. accept:upper() возвращает строку, в которой все буквы accept преобразуются в верхний регистр, поэтому вам нужно сравнить только одно значение.

...