【问题标题】:Removing special characters from a string in angular以角度从字符串中删除特殊字符
【发布时间】:2019-03-11 15:01:31
【问题描述】:

假设我得到一个带有特殊字符的字符串,我想使用过滤器/管道来更改它。每个单词的第一个字母也应该大写。

例如,"@!₪ test stri&!ng₪" 将变为 "Test String"

如何做到这一点?

【问题讨论】:

    标签: javascript angular typescript pipe


    【解决方案1】:

    你可以用管道做如下,

    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);
      }
    
    }
    

    DEMO STACKBLITZ

    【讨论】:

    • 非常感谢在 app.module 中进行哪些更改才能使其正常工作?
    • 您需要将其添加到声明中,查看演示
    • 刚刚做了。以为第一个字母是大写的,另一个没有变小我该怎么做?
    • 它确实会检查样本
    • 我刚刚看到了样本的更新。它将所有单词的所有字母都更改为小写,但第一个单词的第一个字母除外。我希望每个单词的第一个字母都是大写的。现在我得到测试字符串而不是测试字符串 ...@Sajeetharan
    【解决方案2】:

    从网站使用:Regex101

    例如: 您想要拆分或删除客户字符串:'@!₪ test stri&!ng₪' 在测试字符串中输入字符串

    【讨论】:

      【解决方案3】:

      您可以在管道中使用正则表达式以及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);

      【讨论】:

        猜你喜欢
        • 2011-04-11
        • 2016-01-23
        • 2019-11-09
        • 2011-08-29
        • 1970-01-01
        相关资源
        最近更新 更多