我有以下字符串:
<div height="40px" width="30px" />
我想用正则表达式替换所有带有px的数字后面的X乘以它们的值。 (X是变量)。
因此,如果X = 3,结果将是
<div height="120px" width="90px" />
请注意,X必须是我将检索到函数的变量
答案 0 :(得分:7)
以下代码将使用正则表达式将30px
替换为字符串240px
中的s
:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Example {
public static void main(String[] args) {
String s = "abc 30px def";
int var = 8;
Pattern patt = Pattern.compile("([0-9]+)px");
Matcher m = patt.matcher(s);
StringBuffer sb = new StringBuffer(s.length());
while (m.find()) {
int px = Integer.parseInt(m.group(1));
String next = String.valueOf(var * px) + "px";
m.appendReplacement(sb, Matcher.quoteReplacement(next));
}
m.appendTail(sb);
System.out.println(sb.toString());
}
}
以下是它执行的步骤:
s
中搜索匹配项和每场匹配项:
var
。px
并将其作为替换字符串传递。答案 1 :(得分:2)
普通正则表达式不能计算。有一些扩展,例如在Perl中,但我不认为它们在Java中可用。所以你必须走得很远:
抱歉,没有单线解决方案可用。 (但这并不难,除了你需要一个for循环)。