【发布时间】:2015-04-28 15:54:43
【问题描述】:
我目前正在创建一个 Java 程序来重写我们软件中一些过时的 Java 类。部分转换包括将变量名称从包含下划线更改为使用 camelCase。问题是,我不能简单地替换代码中的所有下划线。我们有一些带有常量的类,对于这些类,应该保留下划线。
如何用 stringLabel 替换像 string_label 这样的实例,但不要替换出现在前缀“Parameters.”之后的下划线?
我目前正在使用以下显然不能处理排除某些前缀的问题:
public String stripUnderscores(String line) {
Pattern p = Pattern.compile("_(.)");
Matcher m = p.matcher(line);
StringBuffer sb = new StringBuffer();
while(m.find()) {
m.appendReplacement(sb, m.group(1).toUpperCase());
}
m.appendTail(sb);
return sb.toString();
}
【问题讨论】:
-
这里有问题吗?这听起来更像是一份状态报告,而不是求助请求。我没有看到问号,也没有说明您遇到了什么实际问题,也没有看到您尝试过什么。
-
遵循的实际规则是什么?任何标识符符合
Parameters?在Parameters类中,一个标识符可能会被一个简单的名称引用? -
我认为很明显我可以用“A”替换“_a”之类的内容,但我不确定如何跳过下划线直接出现在特定前缀之后的实例。跨度>
-
@Radiodef 以下是一些示例: 将
field_name转换为fieldName将field_name.setText(Parameters.is_module_installed ? "Label1" : "Label2");转换为fieldName.setText(Parameters.is_module_installed ? "Label1" : "Label2");
标签: java regex camelcasing