【发布时间】:2019-03-11 15:01:31
【问题描述】:
假设我得到一个带有特殊字符的字符串,我想使用过滤器/管道来更改它。每个单词的第一个字母也应该大写。
例如,"@!₪ test stri&!ng₪" 将变为 "Test String"。
如何做到这一点?
【问题讨论】:
标签: javascript angular typescript pipe
假设我得到一个带有特殊字符的字符串,我想使用过滤器/管道来更改它。每个单词的第一个字母也应该大写。
例如,"@!₪ test stri&!ng₪" 将变为 "Test String"。
如何做到这一点?
【问题讨论】:
标签: javascript angular typescript pipe
你可以用管道做如下,
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'specialPipe'
})
export class specialPipe implements PipeTransform {
transform(value: string): string {
let newVal = value.replace(/[^\w\s]/gi, '')
return newVal.charAt(1).toUpperCase() + newVal.slice(2);
}
}
【讨论】:
从网站使用:Regex101
例如: 您想要拆分或删除客户字符串:'@!₪ test stri&!ng₪' 在测试字符串中输入字符串
【讨论】:
您可以在管道中使用正则表达式以及replace 来执行此操作。
首先,使用
str = str.replace(/[^\w\s]/gi, "")
这将删除所有非字母字符
然后你可以使用
str = str.replace(/\b\w/g, (str) => str.toUpperCase())
这会将靠近单词边界(例如空格)的任何字母字符替换为大写版本。
然后您可以将它们链接在一起,如下所示:
let str = "@!₪ test stri&!ng₪";
str = str.replace(/[^\w\s]/gi, "") // Remove non word characters
.trim() // Remove trailing and leadings spaces
.replace(/\b\w/g, (s) => s.toUpperCase()) // Make the first letter of each word upper case
console.log(str);
【讨论】: