有谁知道对字符串的外引号进行操作的 Ruby gem(或内置或本机语法,就此而言)?
我发现自己一遍又一遍地编写这样的方法:
remove_outer_quotes_if_quoted( myString, chars ) -> aString
add_outer_quotes_unless_quoted( myString, char ) -> aString
Run Code Online (Sandbox Code Playgroud)
第一个测试myString它的开始和结束字符是否与chars. 如果是,则返回去掉引号的字符串。否则它返回它不变。chars默认为引号字符列表。
第二个测试myString以查看它是否已经开始和结束char。如果是,则返回未更改的字符串。如果不是,它返回char前后附加的字符串,并且任何嵌入的出现char都用反斜杠转义。char默认为默认字符列表中的第一个。
(当然,我手工拼凑的方法没有如此冗长的名称。)
我在公共存储库中四处寻找类似的方法,但找不到类似的方法。我是唯一一个需要做很多事情的人吗?如果没有,其他人是如何做到这一点的?
如果你经常这样做,你可能想给 String 添加一个方法:
class String
def strip_quotes
gsub(/\A['"]+|['"]+\Z/, "")
end
end
Run Code Online (Sandbox Code Playgroud)
然后你就可以打电话了string.strip_quotes。
添加引号是类似的:
class String
def add_quotes
%Q/"#{strip_quotes}"/
end
end
Run Code Online (Sandbox Code Playgroud)
这称为 asstring.add_quotes并在添加双引号之前使用 strip_quotes。
这可能会解释如何删除和添加它们:
str1 = %["We're not in Kansas anymore."]
str2 = %['He said, "Time flies like an arrow, Fruit flies like a banana."']
puts str1
puts str2
puts
puts str1.sub(/\A['"]/, '').sub(/['"]\z/, '')
puts str2.sub(/\A['"]/, '').sub(/['"]\z/, '')
puts
str3 = "foo"
str4 = 'bar'
[str1, str2, str3, str4].each do |str|
puts (str[/\A['"]/] && str[/['"]\z/]) ? str : %Q{"#{str}"}
end
Run Code Online (Sandbox Code Playgroud)
原来的两行:
# >> "We're not in Kansas anymore."
# >> 'He said, "Time flies like an arrow, Fruit flies like a banana."'
Run Code Online (Sandbox Code Playgroud)
剥离报价:
# >> We're not in Kansas anymore.
# >> He said, "Time flies like an arrow, Fruit flies like a banana."
Run Code Online (Sandbox Code Playgroud)
需要时添加引号:
# >> "We're not in Kansas anymore."
# >> 'He said, "Time flies like an arrow, Fruit flies like a banana."'
# >> "foo"
# >> "bar"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3705 次 |
| 最近记录: |