2016-09-15 73 views
1

类似的东西在未来:字符串部分分开;写在一个新的字符串ASCII

str="Hello;this;is;a;text" 

我所希望的结果是这样的:

result="72:101:108:108:111;116:104:105:115;..." 

这应该是在ASCII文本。

+2

'string.gsu b(str,“[^;]”,函数(c)返回tostring(string.byte(c))..':'end)' – moteus

回答

2

你可以使用字符串匹配度日;分隔每个单词,然后转换,CONCAT:

local str = "Hello;this;is;a;text" 
for word in str:gmatch("[^;]+") do 
    ascii = table.pack(word:byte(1, -1)) 
    local converted = table.concat(ascii, ":") 
    print(converted) 
end 

上述代码的输出是:

72:101:108:108:111 
116:104:105:115 
105:115 
97 
116:101:120:116 

我会把剩下的工作留给你。提示:使用table.concat

+0

非常感谢...这应该有助于完成下一步...正如我刚才提到的...我是一个全新的lua – Dupit

+0

好吧...我进一步了,但我找不到如何返回由两个独立的字符串组成的字符串,如str = str1&“”&str2 – Dupit

1

这里是另一种方法,它利用这一事实,gsub接受一个表,它读取替换:

T={} 
for c=0,255 do 
    T[string.char(c)]=c..":" 
end 
T[";"]=";" 

str="Hello;this;is;a;text" 
result=str:gsub(".",T):gsub(":;",";") 
print(result) 
0

好吧...我得到的方式进一步,但我怎么也找不到返回一个字符串由两个独立的串像

str=str1&" "&str2 
+1

Ask一个单独的问题。但你想要[字符串连接运算符](https://www.lua.org/manual/5.3/manual.html#3.4.6)。 – lhf

1

另一种可能性:

function convert(s) 
    return (s:gsub('.',function (s) 
         if s == ';' then return s end 
         return s:byte()..':' 
        end) 
      :gsub(':;',';') 
      :gsub(':$','')) 
end 

print(convert 'Hello;this;is;a;text')