2017-02-11 2 views
-2

даже если я использую GSUB изменить пустое пространство _ если заявление все еще получает ошибки попытки индексировать нулевую стоимость Интересно, Будет problem.I косяк используйте пар, так как это инструкция, которую дал мой учитель.б string.gsub изменить пустое пространство _ не работает

Это код, извините заранее, новичок.

text = "ib c e d f" 
text = string.lower(text) 
b = text:gsub("%s+", "_") 
for k=1, #b do 

    if not string.sub(b, k,k) or string.sub(b, k,k) ~= " " then 
     if a[i][2] == string.sub(b, k,k) then 
     print(yes) 
     end 
    end 
+1

Что такое 'a [i] [2]'? – hjpotter92

ответ

0

В вашем фрагменте кода есть некоторая синтаксическая ошибка, которая вызывает указанную вами ошибку. Функция gsub действительно работает отлично.

text = "ib c e d f" 
text = string.lower(text) 
b = text:gsub("%s+", "_") --> this gsub is working just fine 
for k=1, #b do 

    if not string.sub(b, k,k) or string.sub(b, k,k) ~= " " then 
     if a[i][2] == string.sub(b, k,k) then --> you didn't assign any table called "a" before --> attempting to index a nil value 
     print(yes) 
     end 
    --> haven't close the "if not string.sub" function with an end 
end --> this is the end for the loop "for k" 

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

text = "ab c d e f " 
text = string.lower(text) 

output = text:gsub("%s", "_") 

for k = 1, #output do 
    local char = string.sub(output, k, k) 
    local originalChar = string.sub(text, k, k) 
    if (originalChar ~= " ") and (char == originalChar) then 
    print(char .. " --> OK") 
    end 
end 

Узор GSUB использует %s вместо %s+ так, что каждое пространство превращается в подчеркивание, чтобы простой тест блока (голец с помощью сравнения символов). Доступен фрагмент кода here.

Смежные вопросы