当前位置: 首页 > 知识库问答 >
问题:

在一次字符串遍历中,将大文本中的**title**转换为title的最佳方法是什么?[副本]

柳飞飙
2023-03-14

假设有一大段文本,转换规则如下:

>

  • **标题**

    :脸红:

    如何在一次遍历中进行转换?


  • 共有3个答案

    尹超
    2023-03-14

    使用不同的捕获组在1个正则表达式中捕获不同的模式,并使用替换功能检查不同的捕获组:

    var input = '**Hey** Oh you! :blush:';
    document.write(input.replace(/\*\*([^*]*)\*\*|:(happy|blush):/ig, function(match, title, smiley) {
      if (title != undefined) {
        return '<h2>' + title + '</h2>';
      } else if (smiley != undefined) {
        return '<img class="emoji" title="blush" src="/img/' + smiley + '.png" />';
      }
    }));
    巢睿
    2023-03-14

    您可以尝试以下方法

    <div id="replace">**title**some text :blush: some link </div>
    var str= $("#replace").html();    
    str = str.replace("**title**", "<h1>title</h1>");     
    str = str.replace(":blush:", "<img class="emoji" title="blush" src:"/img/blush.png"/>");     
    $("#replace").html(str);    
    
    罗建弼
    2023-03-14

    做这类事情的最好方法是正则表达式——它是每种语言中用于这类任务的非常优化的机制。

    在javascript中,根据您的示例

    >>> "**title** qweqwe **foo** ololo **bar**".replace(/(\*\*(\w+)\*\*)/g, "<h1>$2</h1>")
    "<h1>title</h1> qweqwe <h1>foo</h1> ololo <h1>bar</h1>"
    

    ":blush: qweqwe :tongue: ololo :smile:".replace(/(\:(\w+)\:)/g, '<img class="emoji" title="$2" src:="/img/$2.png"/>')
    "<img class="emoji" title="blush" src:="/img/blush.png"/> qweqwe <img class="emoji" title="tongue" src:="/img/tongue.png"/> ololo <img class="emoji" title="smile" src:="/img/smile.png"/>"
    

    塔达!

     类似资料:
    • 问题内容: 将数字转换为字符串的“最佳”方法是什么(就速度优势,清晰度优势,内存优势等而言)? 一些例子: 问题答案: 像这样: 实际上,即使我通常是为了简单方便而这样做,但 对于原始速度而言 ,似乎出现了1000多次迭代,但 对于 根据上述JSPerf测试最快: 应该注意的是,当您认为速度差异可以在0.1秒内进行1百万次转换时,速度差异并不是太大。 更新: 速度因浏览器而异。在Chrome中,根

    • 我有一个对象数组(客户),具有组件:first_Name 我已经检查过名字和姓氏确实只包含一个字母字符串,每个字符串的第一个字母都是小写字母。intellisense给我的错误是“字符不能被解除引用”

    • 问题内容: 将格式化的字符串转换为日历的最简单,最简单的方法是什么?例如将“ dd.MM.yyyy”添加到日历? 问题答案: DateFormat df = new SimpleDateFormat(“dd.MM.yyyy”); Calendar cal = Calendar.getInstance(); cal.setTime(df.parse(stringInstanceRepresentin

    • 我一直在研究如何将字符串转换为Rust中的大写字母。到目前为止,我找到的最理想的方法是: 有没有不那么冗长的方法? 注意:这个问题是专门针对Rust 0.9的。在提问时还有另一个相关的答案,但它是针对Rust 0.8的,它有显著的语法差异,因此不适用。

    • 本文向大家介绍在Python3中将字符串转换为字节的最佳方法,包括了在Python3中将字符串转换为字节的最佳方法的使用技巧和注意事项,需要的朋友参考一下 要将字符串转换为字节,有多种方法, 方法1:使用encode()方法 输出结果 在python3中,第一个参数encode()默认为'utf-8'。据推测,这种方法也更快,因为默认参数在C代码中导致NULL。 方法2:使用bytes()构造函数

    • 问题内容: 我有一个我想完全输出为String的。本质上,我想使用由制表符分隔的每个元素按顺序输出。有什么快速的方法可以做到这一点吗?你可以遍历它(或删除每个元素)并将其连接为字符串,但我认为这会非常慢。 问题答案: 基本上,使用循环来迭代是唯一的选择: 不要使用此代码,请继续阅读此答案的底部,以了解为什么不希望使用此代码,以及应该使用哪个代码代替: 实际上,字符串串联就可以了,因为javac编译