我有一个这样的字符串:
void methodname(String s1, String s2) //there can be any no of parameters
我希望正则表达式得到这样的最终字符串:
methodname(s1,s2)
请帮帮我
答案 0 :(得分:1)
你可以试试这个。它也适用于对象,但也许有更好的方法来做到这一点或更好REGEX
String str = "void methodname(String s1, String s2)";
Pattern pattern = Pattern.compile("\\w\\s+([\\w_]+\\()(.*\\))");
Matcher m1 = pattern.matcher(str);
if (m1.find()) {
String res = m1.group(1);
Matcher m2 = Pattern.compile(",?\\s?\\w+\\s+(\\w+\\)?)").matcher(m1.group(2));
int i = 0;
while (m2.find()) {
if (i > 0) {
res += ",";
}
res += m2.group(1);
i++;
}
System.out.println(res);
}
输出:
methodname(s1,s2)
答案 1 :(得分:0)
在Perl中,像这样
$str = "void methodname(String s1, String s2)";
$str =~ s/void//;
$str =~ s/String//;
答案 2 :(得分:0)
为什么你不能使用替换方法而不是正则表达式。
String inputString="void methodname(String s1, String s2)";
inputString=inputString.replace("void ",""); //Replace "void " with empty string
inputString=inputString.replace("String ",""); //Replace "String " with empty string