Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法用java替换html字符串中的特定文本_Java_Html_Regex_Expression_Jakarta Mail - Fatal编程技术网

无法用java替换html字符串中的特定文本

无法用java替换html字符串中的特定文本,java,html,regex,expression,jakarta-mail,Java,Html,Regex,Expression,Jakarta Mail,我有一个方法,假设在发送给客户机电子邮件之前替换html字符串的一部分。 我曾尝试使用JavaReplaceAll()方法,但没有成功。 以下是我迄今为止所做的尝试: data.replaceAll("dd%title%dd", "This is the Title"); data.replaceAll("dd%message%dd", "This is the message body"); 但是当我试着这样做的时候,它不起作用,我一直在不更换绳子的情况下得到它。 以下是我在yahoo ma

我有一个方法,假设在发送给客户机电子邮件之前替换html字符串的一部分。 我曾尝试使用JavaReplaceAll()方法,但没有成功。 以下是我迄今为止所做的尝试:

data.replaceAll("dd%title%dd", "This is the Title");
data.replaceAll("dd%message%dd", "This is the message body");
但是当我试着这样做的时候,它不起作用,我一直在不更换绳子的情况下得到它。 以下是我在yahoo mail收件箱中收到的邮件的图像:

我曾尝试使用正则表达式来替换,但它并没有像我预期的那样工作

这是我现在拥有的

/******************* CONSTRUCTING THE MESSAGE TRANSLATOR ********************/
    private String msgTranslate(String subject, String messaging){
        // HERE WE START CONSTRUCTING THE MESSAGE TRANSLATE
        String content="";
        String data="";
        DjadeUtil util=new DjadeUtil();
        // NOW LETS START PROCESSING
        if(messaging!=null && subject!=null){
            // Now lets read
            try {
                data=util.readByScanner(TEMPLATESOURCE);
                // Now lets check
                if(data.length()>0){
                    // Here we start matching to replace
                    StringBuffer sb = new StringBuffer(data.length());
                    Pattern patA = Pattern.compile("dd%title%dd");
                    Pattern patB = Pattern.compile("dd%message%dd");

                    Matcher mA = patA.matcher(data);
                    Matcher mB = patB.matcher(data);

                    while (mA.find()) {
                        mA.appendReplacement(sb, subject);
                    }// End of while loop

                    while (mB.find()) {
                        mB.appendReplacement(sb, messaging);
                    }// End of while loop

                    //HERE WE STORE NEW CHANGE
                    mA.appendTail(sb);
                    mB.appendTail(sb);
                    content=sb.toString();
                }
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        // Here we return string
        return content;
    }
<div style="line-height: 20px;">
                    <!-- THE BODY OF NEWSLATER GOES HERE //-->
                    <div class="newTitle">dd%title%dd</div>
                    <div class="newBody">dd%message%dd</div>
                    <div class="newButtons">
                        <button class="butNews" onclick="window.location='https://napoleoninvestment.net/?page_id=12'">Join our Telegram</button>
                        <button class="butNews" onclick="window.location='https://napoleoninvestment.net/?page_id=391'">Invest Now</button>
                    </div>
                </div>
这是我的html字符串

/******************* CONSTRUCTING THE MESSAGE TRANSLATOR ********************/
    private String msgTranslate(String subject, String messaging){
        // HERE WE START CONSTRUCTING THE MESSAGE TRANSLATE
        String content="";
        String data="";
        DjadeUtil util=new DjadeUtil();
        // NOW LETS START PROCESSING
        if(messaging!=null && subject!=null){
            // Now lets read
            try {
                data=util.readByScanner(TEMPLATESOURCE);
                // Now lets check
                if(data.length()>0){
                    // Here we start matching to replace
                    StringBuffer sb = new StringBuffer(data.length());
                    Pattern patA = Pattern.compile("dd%title%dd");
                    Pattern patB = Pattern.compile("dd%message%dd");

                    Matcher mA = patA.matcher(data);
                    Matcher mB = patB.matcher(data);

                    while (mA.find()) {
                        mA.appendReplacement(sb, subject);
                    }// End of while loop

                    while (mB.find()) {
                        mB.appendReplacement(sb, messaging);
                    }// End of while loop

                    //HERE WE STORE NEW CHANGE
                    mA.appendTail(sb);
                    mB.appendTail(sb);
                    content=sb.toString();
                }
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        // Here we return string
        return content;
    }
<div style="line-height: 20px;">
                    <!-- THE BODY OF NEWSLATER GOES HERE //-->
                    <div class="newTitle">dd%title%dd</div>
                    <div class="newBody">dd%message%dd</div>
                    <div class="newButtons">
                        <button class="butNews" onclick="window.location='https://napoleoninvestment.net/?page_id=12'">Join our Telegram</button>
                        <button class="butNews" onclick="window.location='https://napoleoninvestment.net/?page_id=391'">Invest Now</button>
                    </div>
                </div>

dd%标题%dd
dd%消息%dd
加入我们的电报
现在投资
我想用“这是标题”替换“dd%title%dd”,用“这是邮件正文”替换“dd%message%dd”。
我不知道哪里出了问题。任何帮助都将不胜感激

我想您忘记重新分配
数据了。您不需要
replaceAll
,因为不需要正则表达式匹配

data = data.replace("dd%title%dd", "This is the Title");
data = data.replace("dd%message%dd", "This is the message body");

哦,是的,我完全忘记了尽管你有一个有效的解决方案,但这并不是一个糟糕的做事方式。更好的选择是使用模板引擎,例如Thymeleaf(它理解HTML结构)或Velocity/Mustach。