程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了以角度查找并突出显示两个字符串中的不同单词大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决以角度查找并突出显示两个字符串中的不同单词?

开发过程中遇到以角度查找并突出显示两个字符串中的不同单词的问题如何解决?下面主要结合日常开发的经验,给出你关于以角度查找并突出显示两个字符串中的不同单词的解决方法建议,希望对你解决以角度查找并突出显示两个字符串中的不同单词有所启发或帮助;

我有两个字符串

let old = "if(is_required(ABCD))then is_valID_numeric(ABCD,'3.0')";

let new = "if(is_required(PQR))then is_valID_numeric(PQR,'3.0')";

在上面的两个字符串中,唯一的区别是新字符串中的 PQR,所以要以黄色突出显示 PQR。

还可以出现更多用例,如下图所示

以角度查找并突出显示两个字符串中的不同单词

我在角管中尝试了以下方法。

import { Pipe,Pipetransform } from '@angular/core';

@Pipe({name: 'Highlighter'})
export class Highlighter implements Pipetransform {
  transform(value,...args: anY[]): number {
    if(!args[0]) return value;
    let text = '';
    value.split('').forEach((val,i)=>{
       if(val != args[0].charat(i)){
         text +="<span class='highlight'>" + val + "</span>";
       } else {
        text +=val;
       }
    });
    return text;
  }
}

HTML

<p [INNERHTML]="new | Highlighter:old"></p>

上面的方法是使用字符检查,如果字符串的长度不同,这将不起作用。

Stackblitz

解决方法

提示:“在复制和粘贴之前,尝试理解代码”

管道使用 split(' ') 创建单词数组并将数组元素与“单词”进行比较,因此在您的示例中,数组变为

['if(isrequired(MEQ_NUM))','then','isvalid'...]

所以任何单词都是“MEQ_NUM”

你需要改变你的管道,使用一些像:

export class Highlighter  implements PipeTransform {
  transform(value: String,...args: anY[]): String {
    if (!args[0])
      return value;
    args.forEach(x=>{
      value=value.split(X).join('<span class="highlight">' + x + '</span>')
    })
    return value
  }
}

看到这个管道被自己的词“分裂”,并与<span class=...></span>结合

在之前的例子中,创建的数组是

["if(isrequired(',")',then isvalid"...]

加入是“诡计”,the stackblitz

大佬总结

以上是大佬教程为你收集整理的以角度查找并突出显示两个字符串中的不同单词全部内容,希望文章能够帮你解决以角度查找并突出显示两个字符串中的不同单词所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: