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

在一次字符串遍历中,将大文本中的**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()构造函数

    • 问题内容: 假设我有两个或两个以上相同长度的列表。遍历它们的好方法是什么? ,是列表。 要么 还是我缺少任何变体? 使用一个相对于另一个有什么特别的优势吗? 问题答案: 通常的方法是使用: 这将停止两个iterables时较短且耗尽。另外值得注意的是:(仅适用于Python 2)和(适用于Python 3)。