我想静态创建一个RegEx模式,但我认为我的语法错误了?
static {
Pattern noHREF = Pattern.compile("<a.+?>", Pattern.CASE_INSENSITIVE);
}
public static String getStringWithHREFsRemoved(String html) {
Matcher m = noHREF.matcher(html);
etc.....
答案 0 :(得分:3)
您需要将noHREF
变量作为您班级的静态成员变量。
static Pattern noHREF = Pattern.compile("<a.+?>", Pattern.CASE_INSENSITIVE);
public static String getStringWithHREFsRemoved(String html) {
Matcher m = noHREF.matcher(html);
// ...
在您在问题中编写的代码中,noHREF变量意味着一个本地(临时)变量,其范围介于static {
和}
之间。
答案 1 :(得分:2)
宣布
时static {
Pattern noHREF = Pattern.compile("<a.+?>", Pattern.CASE_INSENSITIVE);
}
这是一个匿名静态方法,在加载类时执行,而noHREF声明是该方法中的局部变量,而不是您所期望的静态字段。要获取静态字段,请使用声明
static Pattern noHREF = Pattern.compile("<a.+?>", Pattern.CASE_INSENSITIVE);
这将允许您从静态方法访问noHREF。