我一直在尝试制作一个管道来替换消息中的某些字符,这是管道的代码:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({name: 'replace'})
export class ReplacePipe implements PipeTransform {
transform(value: string): string {
console.log(value);
let newValue = value.replace(/n/g, '<br>');
console.log(newValue);
return `${newValue}`;
}
}
我在页面上使用它:
<ion-card-content [innerHtml]="message | linky | replace"></ion-card-content>
问题:当替换语句是这样时,它可以工作:
let newValue = value.replace('bit', '<br>');
,但是当看起来像这样时什么都不做:(我需要为此工作(
let newValue = value.replace(/n/g, '<br>');
我似乎无法弄清楚我要在哪里出错。
我能够通过将<br>
放置为double quotes
并将额外的添加到
n
。我不知道为什么我需要这样做才能使它起作用,但现在可以很好地工作。这是解决方案:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({name: 'replace'})
export class ReplacePipe implements PipeTransform {
transform(value: string): string {
console.log(value);
if(value) {
let newValue = value.replace(/\n/g, "<br>").replace(/&/g, "&");
console.log(newValue);
return `${newValue}`;
}
}
}
当您说它不起作用时,这意味着Console.log(newValue(将输出作为"某物 n某物"而不是"某物"
某物?是否有任何形式的错误消息?
我刚刚获取了您的确切代码并在此处进行了测试并起作用。
var value = "asd n more stuff";
console.log(value)
let newValue = value.replace(/n/g, '<br>');
console.log(newValue)
您确定 n
字符在字符串中吗?它可能是字符串。尝试一下:let newValue = value.replace(/\n/g, '<br>');
您需要的原因是因为您的字符串精算cointains "n"
而不是newline
字符。在REGEX n
中是一个newline字符,\n
是"n"
作为字符串。
我也正在处理以这种方式返回行,但只是发现您可以轻松地使用CSS显示这些线路的跳跃。{ white-space: pre; }