如何替换字符串

时间:2013-12-20 10:04:36

标签: java regex string str-replace

String htmlString ="<font color='#00ff00' size='100'> SampleText </font>"

这是一个示例String,我需要将字体大小从100更改为25.我的意思是original font size / 4

上述问题有解决方案吗?

结果字符串应为:"<font color='#00ff00' size='25'> SampleText </font>"

我认为正常表达是可行的所以我在这里也添加正则表达式标签 htmlString.replaceAll(regularExpression,regularExpression);

4 个答案:

答案 0 :(得分:1)

我认为使用正则表达式会更好。

private static String setSize(String htmlString) {
    String reg = "size='[0-9]+'";
    Pattern pattern = Pattern.compile(reg);
    Matcher matcher = pattern.matcher(htmlString);
    while (matcher.find()) {
        String sizeString = matcher.group();
        pattern = Pattern.compile("[0-9]+");
        Matcher numMatcher = pattern.matcher(sizeString);
        if (numMatcher.find()) {
            String size = numMatcher.group();
            int realSize = Integer.parseInt(size);
            int resultSize = realSize / 4;
            String resultSizeString = "size='" + resultSize + "'";
            htmlString = htmlString.replaceAll(sizeString, resultSizeString);

        }
    }
    return htmlString;
}

答案 1 :(得分:0)

您可以将字符串存储在两个变量font_sizehtml_template中,然后使用sprintf函数将模板“编译”为您想要的值,如下所示:

char* html_template = "<font color='#00ff00' size='%d'> SampleText </font>";
int font_size = superFontSizeCalculation();
char* compiled_html = malloc(strlen(html_template));

sprintf(compiled_html, html_template, font_size);

我不检查str *函数的任何返回,但在实际使用中,你应该这样做。

编辑:当你改变主意并希望了解java而不是C时,你可以通过在模板字符串中添加标签来使用小模板引擎获得相同的机制,并通过用你的值替换标签进行编译。

例如:

static final String FONT_SIZE_TAG = "<FONT_SIZE_TAG>";
static final String FONT_COLOR_TAG = "<FONT_COLOR_TAG>";

String htmlString ="<font color='" + FONT_COLOR_TAG + "' size='" + FONT_SIZE_TAG + "'> SampleText </font>";

String compiled = htmlString.replace(FONT_COLOR_TAG, "#00ff00").replace(FONT_SIZE_TAG, String.valueOf(FONT_COLOR_TAG)); 

答案 2 :(得分:0)

我理解这个问题是“这是否可以使用正则表达式,如果是,我该怎么做?”

答案是否定的。

使用正则表达式来解析或修改html。它不起作用。它无法在数学上工作。

检查:RegEx match open tags except XHTML self-contained tags

您总能找到一个大多数时间工作的解决方案,但在其他示例中失败。因此,除非你的解决方案不完整,否则正则表达式应该真的不是解决方案。

答案 3 :(得分:-1)

   String htmlString ="<font color='#00ff00' size='100'> SampleText </font>";
            int pos1=htmlString.indexOf("size='");
            if(pos1!=-1){
                int pos3=pos1+6; /*6 is the length of size=' */
                String tempString=htmlString.substring(pos3, htmlString.length());
                int pos2=tempString.indexOf("'");
                if(pos2!=-1){
                    String sizeString=htmlString.substring(pos3, pos3+pos2);
                    String stringToReplace=htmlString.substring(pos1,pos3+pos2+1);
                    int size=Integer.parseInt(sizeString);
                    int newSize=size/4;
                    String newString="size'"+newSize+"'";                        
                    htmlString=htmlString.replace(stringToReplace, newString);
                }
            }