我有一串SVG标记,其中包含多个这些标记:
url(#586-xr___83_193_101__rgba_243_156_18_1__0-rgba_243_156_18_1__100)
我需要他们这样:
url('#586-xr___83_193_101__rgba_243_156_18_1__0-rgba_243_156_18_1__100')
在括号内加引号。
这些将在包含许多不同标记的长字符串中混合,因此需要非常准确。
答案 0 :(得分:1)
你可以使用这样的正则表达式:
\((.*?)\)
使用替换字符串('$1')
这个想法是捕获括号内的所有内容并连接'
所以,你可以使用这样的代码:
String str = "url(#586-xr___83_193_101__rgba_243_156_18_1__0-rgba_243_156_18_1__100)";
str = str.replaceAll("\\((.*?)\\)", "('$1')");
//Outuput: url('#586-xr___83_193_101__rgba_243_156_18_1__0-rgba_243_156_18_1__100')
<强> IdeOne example 强>
如果您想要更好的性能正则表达式,可以使用:
str = str.replaceAll("\\(([^)]*)\\)", "('$1')");
答案 1 :(得分:0)
ReplaceAll
删除字符串的一部分,然后添加不相关且不变的新内容。
因为替换字符串在两边都不一样,我想象的唯一解决方案(使用RegEx和ReplaceAll
的约束)是两次完成的:
String Str = "url(#586-xr___83_193_101__rgba_243_156_18_1__0-rgba_243_156_18_1__100)";
Str = Str.replaceAll("\\(", "('"); // replace left parenthesis
Str = Str.replaceAll("\\)", "')"); // replace right parenthesis
System.out.print("Return Value: " + Str);
// Return Value: url('#586-xr___83_193_101__rgba_243_156_18_1__0-rgba_243_156_18_1__100')
您可以对其进行测试here。