如何向字符串添加双引号字符?

如何给给定的字符串添加双引号?

local str = "foo"

如何获取包含前导和尾部引号 " 的字符串 "foo"

原文链接 https://stackoverflow.com/questions/5305412

点赞
stackoverflow用户391315
stackoverflow用户391315

如果我理解你的问题正确,有几种不同的方法可以实现。

  1. 使用转义的双引号:

    function quote(str)
        return "\""..str.."\""
    end
    
  2. 使用单引号来使用双引号字符而不进行转义:

    function quote2(str)
        return '"'..str..'"'
    end
    
2011-03-14 22:46:57
stackoverflow用户6236
stackoverflow用户6236

你可以将引用与字符串粘在一起:

local str = "foo"

print('"' .. foo .. '"') --> "foo"
print("\"" .. foo .. "\"") --> "foo"
print([["]] .. foo .. [["]]) --> "foo"

但是,如果您正在构造供机器使用的数据(例如进行序列化),则需要转义引号和其他可能包含在字符串中的特殊字符。使用"%q"格式说明符进行此操作:

local str = 'f"o"o'

print(string.format("%q", str)) --> "f\"o\"o"

更短的形式:

print(("%q"):format(str)) --> "f\"o\"o"
2011-03-14 23:04:47
stackoverflow用户151312
stackoverflow用户151312

为了防止需要同时进行转义和引用:

function string.quote(str)
  return '"' .. str:gsub('\\', '\\\\'):gsub('"', '\\"') .. '"'
end

local a = '"Hello again \\ to all my friends"'

print(a:quote())

这将给你以下字符串:

"\"Hello again \\ to all my friends\""
2012-07-13 00:41:54