0

我有一个 html 文件,其中 html 元素的名称如下:

<input type="text" name="HCFA_DETAIL_SUPPLEMENTAL" value="" size="64" />

我的要求是在 java 命名约定中重命名 name 属性值,如下所示:

<input type="text" name="hcfaDetailSupplemental" value="" size="64" />

由于有大量这样的元素,我想使用正则表达式来完成。谁能建议我如何使用正则表达式来实现这一目标?

4

3 回答 3

1

使用 jQuery 获取名称,然后使用正则表达式替换所有出现的情况_[a-z]

$('input').each(function () {
    var s = $(this).attr('name').toLowerCase();
    while (s.match("_[a-z]"))
        s = s.replace(new RegExp("_[a-z]"), s.match("_[a-z]").toString().toUpperCase());
    $(this).attr('name', s);
});
于 2012-05-29T09:50:16.107 回答
1

在大多数情况下,将正则表达式与 html 一起使用是不好的做法,但如果您必须使用它,那么这里是一种解决方案。

所以首先你可以在 name="XXX" 属性中找到文本。可以通过使用这个 regex 来完成(?<=name=")[a-zA-Z_]+(?=")。当你找到它时,将“_”替换为“”,并且不要忘记将其余字母小写。现在您可以使用我们之前使用的相同正则表达式将旧值替换为新值。

这应该可以解决问题

String html="<input type=\"text\" name=\"HCFA_DETAIL_SUPPLEMENTAL\" value=\"\" size=\"64\"/>";

String reg="(?<=name=\")[a-zA-Z_]+(?=\")";
Pattern pattern=Pattern.compile(reg);
Matcher matcher=pattern.matcher(html);
if (matcher.find()){
    String newName=matcher.group(0);
    //System.out.println(newName);
    newName=newName.toLowerCase().replaceAll("_", "");
    //System.out.println(newName);
    html=html.replaceFirst(reg, newName);
}
System.out.println(html);
//out -> <input type="text" name="hcfadetailsupplemental" value="" size="64"/>
于 2012-05-29T11:00:38.173 回答
1

不要使用正则表达式来遍历 HTML(为什么在这里)。使用适当的框架(例如HTML Parser )应该可以解决问题。

此处提供了一系列可帮助您入门的示例。

于 2012-05-29T09:40:50.547 回答