【问题标题】:Take out string from "<string>" in Lua从 Lua 中的“<string>”中取出字符串
【发布时间】:2013-12-30 09:36:32
【问题描述】:

我想从 Lua 中的字符串中解析一些数据。我尝试了string.matchstring.sub 的几种组合,但没有运气。这是详细信息...

str='[{id:78749,name:Hrithik Roshan,character:Vijay Deenanath Chauhan,order:0,cast_id:1,profile_path:/1uGhDRNCA9I4WvyD9TfgKYnLEhZ.jpg},{id:77234,name:Priyanka Chopra,character:Kaali Gawde,ord'

fixstr = string.gsub(str,"name:","<actors>")
fixstr = string.gsub(fixstr,"character:","<actors>")
print(fixstr)
fixstr1 = string.match( fixstr, "<actors>(.+)<actors>")
print(fixstr1)

输出:

rint(fixstr)的输出

[{id:78749,<actors>Hrithik Roshan,<actors>Vijay Deenanath Chauhan,order:0,cast_id:1,profile_path:/1uGhDRNCA9I4WvyD9TfgKYnLEhZ.jpg},{id:77234,<actors>Priyanka Chopra,<actors>Kaali Gawde,ord

print(fixstr1)的输出

Hrithik Roshan,<actors>Vijay Deenanath Chauhan,order:0,cast_id:1,profile_path:/1uGhDRNCA9I4WvyD9TfgKYnLEhZ.jpg},{id:77234,<actors>Priyanka Chopra,

我想要做的是获取&lt;actors&gt;...&lt;actors&gt; 之间的所有字符串 但它没有奏效。有人可以帮忙吗?

【问题讨论】:

    标签: string parsing lua lua-patterns


    【解决方案1】:

    要获取&lt;actors&gt;&lt;actors&gt; 之间的所有字符串,请使用string.gmatch 进行全局匹配:

    for name in string.gmatch(fixstr, "<actors>(.-)<actors>") do
        print(name)
    end
    

    注意.- 的使用,其中- 匹配零次或多次出现,但它不是贪婪的。

    输出:

    Hrithik Roshan,
    Priyanka Chopra,
    

    实际上,除非您需要fixstr 用于其他用途,否则您无需将name:character: 替换为&lt;actors&gt;,只需运行一次string.gmatch 即可:

    for name in string.gmatch(str, "name:(.-)character:") do
        print(name)
    end
    

    【讨论】:

    • 感谢它的魅力。但是因为它在循环中,每次运行时都会在新行中提供输出
    • @user1640175 新行由print 添加。您可以初始化一个空字符串result = "" 并在循环result = result .. name 中将名称连接到它。
    • @user1640175,你也可以用io.write(name,' ')代替print
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    相关资源
    最近更新 更多