首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >能否从文本区域的html页面粘贴中找到这样的标记,并将其标记替换为javascript代码中提到的另一个标记?

能否从文本区域的html页面粘贴中找到这样的标记,并将其标记替换为javascript代码中提到的另一个标记?
EN

Stack Overflow用户
提问于 2015-06-22 19:03:54
回答 2查看 123关注 0票数 2
代码语言:javascript
运行
复制
<HTML>

<HEAD>
</HEAD>

<BODY>
    <TABLE>
        <TR>
            <TD ROWSPAN="1" COLSPAN="1">
                <P CLASS="text">HR-CT</P>
            </TD>
            <TD ROWSPAN="1" COLSPAN="1">
                <P CLASS="Tab-Text-7">my
                    <EM CLASS="Math-B">i</EM> Stackoverflow
                    <EM 
                    CLASS="Math-B">i</EM>
                    <EM CLASS=
                    "Math-B">i</EM>
                    <EM CLASS="Math-B">g</EM> UIP-Muster
                    <EM CLASS="Math-B">m</EM>
                </P>
            </TD>
        </TR>
        <TR>
            <TD>
                <EM CLASS="hoch">C</EM>
                <EM CLASS="Math-C">d</EM>
            </TD>
        </TR>
    </TABLE>
</BODY>

</HTML>

预期产出:-

代码语言:javascript
运行
复制
("<EM CLASS="Math-C">g</EM>", should be replaced with "&#8660;").
("<EM CLASS="Math-B">i</EM>", should be replaced with "&#126;").

使用下面的代码,我可以轻松地替换所有这些标记,但我希望将其转换为javascript代码,以便它能够从文本区域读取数据,然后用其他标记替换所有这些标记。

Java代码:

代码语言:javascript
运行
复制
FileInputStream fstream;
    FileOutputStream fout;
    DataInputStream in1;
    BufferedReader br;
    BufferedWriter bw=null;
    String htmlText=null;


    String line;
            fstream = new FileInputStream("D:\\Special symbol 
files\\test symbol.htm");
            String st=" ";
            fout = new FileOutputStream("D:\\Special symbol files\\test 
symbol new.html",true);
            in1 = new DataInputStream(fstream);
            br = new BufferedReader(new InputStreamReader(in1,"UTF-8"));
            reader = new FileInputStream("D:\\Special symbol files\\test 
symbol.htm");           
            bw=new BufferedWriter(new OutputStreamWriter(fout,"UTF-8"));
            while ((line=br.readLine()) != null) 
            {
                htmlText=htmlText+line;
            }
            //htmlText=extractText(reader);
            System.out.println("html content :"+htmlText);
            System.out.println("index:"+htmlText.indexOf("<EM  
CLASS=\"Math-C\">o</EM>"));



            htmlText=htmlText.replace("<EM CLASS=\"Math-B\">i</EM>", 
"&#126;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-B\">l</EM>", 
"<EM CLASS=\"Math-B\">l</EM>");
            htmlText=htmlText.replace("<EM CLASS=\"Math-B\">j</EM>", 
"<EM CLASS=\"Math-B\">j</EM>");
            htmlText=htmlText.replace("<EM CLASS=\"Math-B\">g</EM>", 

"<EM CLASS=\"Math-B\">g</EM>");
             /*pattern = Pattern.compile("<EM CLASS=\"Math-B\">\\s*m\\s*</EM>"); 
             m = pattern.matcher(htmlText);
                htmlText=m.replaceAll("&ge;");*/
            htmlText=regExp(htmlText,"Math-B","m","&ge;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-B\">+</EM>", "&#247;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-B\">[</EM>", "&le;");

            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">o</EM>", "&#8595;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">m</EM>", "&#8593;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">u</EM>", "&#8658;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">e</EM>", "&#8658;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">t</EM>", "&#8594;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">d</EM>", "&#8594;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">r</EM>", "&#8592;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">b</EM>", "&#8592;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">w</EM>", "&#8660;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">g</EM>", "&#8660;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">s</EM>", "&#8656;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">c</EM>", "&#8656;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">n</EM>", "&#8657;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">p</EM>", "&#8659;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">v</EM>", "&#8596;");
            htmlText=htmlText.replace("<EM CLASS=\"Math-C\">f</EM>", "&#8596;");

            htmlText=htmlText.replace(">", ">\n");
            bw.write(htmlText);
            bw.close();

在上述代码的帮助下,我可以替换标记,但是我需要将这个java代码转换成java脚本,通过它粘贴到文本区域的数据可以很容易地通过单击按钮来替换。http://jsfiddle.net/yk6Tq/4/ (供参考)

任何人都可以帮帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-23 17:31:40

您可以做的是创建一个要像这样替换的标签数组

代码语言:javascript
运行
复制
var array = {
            '<EM CLASS="Math-C">d</EM>':'&#8660;', 
            '<EM CLASS="hoch">C</EM>':'<sup>C</sup>',
            '<EM CLASS="Math-B">g</EM>':'&#156;',
            '<EM CLASS="Math-B">i</EM>':'&#126;'
        }

现在,您可以循环遍历数组并替换字符串中的值。

代码语言:javascript
运行
复制
var originalText = $('#txtArea').val();
var finalText = originalText;

for (var val in array)
   finalText = finalText.replace(new RegExp(val, "g"), array[val]);

这是一个相同的工作JSFiddle

票数 1
EN

Stack Overflow用户

发布于 2015-06-24 15:02:59

这就是我问题的解决办法。

代码语言:javascript
运行
复制
$(document).ready(function(){

   $('#findAndReplace').on('click', function(){

     var array = {
        '<EM CLASS="text">((\n|.*?))d</EM>':'&#8660;', 
        '<EM CLASS="data">((\n|.*?))c</EM>':'<sup>C</sup>',
        '<EM CLASS="data1">((\n|.*?))g</EM>':'&#156;',

    }

    var originalText = $('#txtArea').val();
    var finalText = originalText;

    for (var val in array)
        finalText = finalText.replace(new RegExp(val, "g"), array[val]);

    $('#txtArea').val(finalText);


  });

});

有了这个帮助,我们可以找到和替换多行以及同一行文本。谢谢你,苏希尔。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30987818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档