有没有办法让这个函数对所有捕获模式使用单个替换表?
是的。
但是你不想使用它:-)
function sanitize(txt)
local replacements = {
-- only up to 3 spaces; add more entries to this table for longer chains of spaces
['&' ] = '&', ['& ' ] = '& ', ['& ' ] = '& ', ['& ' ] = '& ',
['<' ] = '<', ['< ' ] = '< ', ['< ' ] = '< ', ['< ' ] = '< ',
['>' ] = '>', ['> ' ] = '> ', ['> ' ] = '> ', ['> ' ] = '> ',
['\n'] = '<br/>', ['\n '] = '<br/> ', ['\n '] = '<br/> ', ['\n '] = '<br/> ',
[' ' ] = ' ', [' ' ] = ' ',
['0 '] = '0 ', ['0 '] = '0 ',
['1 '] = '1 ', ['1 '] = '1 ',
['2 '] = '2 ', ['2 '] = '2 ',
['3 '] = '3 ', ['3 '] = '3 ',
['4 '] = '4 ', ['4 '] = '4 ',
['5 '] = '5 ', ['5 '] = '5 ',
['6 '] = '6 ', ['6 '] = '6 ',
['7 '] = '7 ', ['7 '] = '7 ',
['8 '] = '8 ', ['8 '] = '8 ',
['9 '] = '9 ', ['9 '] = '9 ',
['^&' ] = '^&', ['^& ' ] = '^& ', ['^& ' ] = '^& ', ['^& ' ] = '^& ',
['^<' ] = '^<', ['^< ' ] = '^< ', ['^< ' ] = '^< ', ['^< ' ] = '^< ',
['^>' ] = '^>', ['^> ' ] = '^> ', ['^> ' ] = '^> ', ['^> ' ] = '^> ',
['^\n'] = '^<br/>', ['^\n '] = '^<br/> ', ['^\n '] = '^<br/> ', ['^\n '] = '^<br/> ',
['^ '] = ' ', ['^ '] = ' ', ['^ '] = ' ',
['^0'] = '', ['^0 '] = ' ', ['^0 '] = ' ', ['^0 '] = ' ',
['^1'] = '', ['^1 '] = ' ', ['^1 '] = ' ', ['^1 '] = ' ',
['^2'] = '', ['^2 '] = ' ', ['^2 '] = ' ', ['^2 '] = ' ',
['^3'] = '', ['^3 '] = ' ', ['^3 '] = ' ', ['^3 '] = ' ',
['^4'] = '', ['^4 '] = ' ', ['^4 '] = ' ', ['^4 '] = ' ',
['^5'] = '', ['^5 '] = ' ', ['^5 '] = ' ', ['^5 '] = ' ',
['^6'] = '', ['^6 '] = ' ', ['^6 '] = ' ', ['^6 '] = ' ',
['^7'] = '', ['^7 '] = ' ', ['^7 '] = ' ', ['^7 '] = ' ',
['^8'] = '', ['^8 '] = ' ', ['^8 '] = ' ', ['^8 '] = ' ',
['^9'] = '', ['^9 '] = ' ', ['^9 '] = ' ', ['^9 '] = ' ',
}
return txt:gsub('%^?[&<>\n%d ] *', replacements)
end