Удаление специальных символов из строки в LUA - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь очистить столбец данных, содержащий почтовые индексы, перед обработкой значений.Данные содержат все виды сумасшедшего форматирования или ввода, подобные следующему, и являются типом данных CHAR:

12345 12.345 1234-5678 12345 6789 123456789 12345-6789.[пусто]

Я хотел бы удалить все специальные символы и попробовал следующий код, но мой скрипт завершился неудачно после многих итераций логики.Когда я говорю, что это не удается, скажем, sOriginalZip = '.', Но оно проходит мою проверку пустых строк и проверку на ноль, как если бы она не была пустой даже после того, как я заменил все специальные символы, управляющие символы и пробелы.Поэтому мой вывод выглядит так: "2 sZip5 ="

код:

nNull = nil
sZip5 = string.gsub(sOriginalZip,"%p","")
sZip5 = string.gsub(sZip5,"%c","")
sZip5 = string.gsub(sZip5,"%s","")
print("sZip5 = " .. sZip5)
if sZip5 ~= sBlank or tonumber(sZip5) ~= nNull then
    print(" 2 sZip5 = " .. sZip5)

else
    print("3 sZip5 = " .. sZip5)

end

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Спасибо!В итоге я использовал комбинацию csarr и Egor, чтобы получить следующее:

sZip5 = string.gsub(sOriginalZip,"%W",function(d)return tonumber(d) and d or "" end) 

Похоже, что он оценивает правильно.Еще раз спасибо!

0 голосов
/ 12 октября 2018

Я думаю, что есть разные способы, следующие должны работать:

sZip5 = string.gsub(sOriginalZip, '.', function(d) return tonumber(d) and d or '' end)

Возвращает числовую строку, пустое значение или ноль

...