【问题标题】:Angular filter to replace all underscores to spaces角度过滤器将所有下划线替换为空格
【发布时间】:2015-11-03 12:46:17
【问题描述】:

我需要一个过滤器来将字符串中的所有下划线替换为空格

【问题讨论】:

    标签: javascript regex angularjs angularjs-filter


    【解决方案1】:

    string.replace 不仅接受字符串作为第一个参数,还接受正则表达式作为第一个参数。因此,将_ 放在正则表达式分隔符/ 中,并同时添加g 修饰符。 g 调用了全局修饰符,它将全局替换。

    App.filter('underscoreless', function () {
      return function (input) {
          return input.replace(/_/g, ' ');
      };
    });
    

    【讨论】:

    • 如果input 不是字符串,或者input 为空或未定义,则此操作失败。
    • 简单,只需使用 if stmt 进行条件检查。
    【解决方案2】:

    这是一个通用的替换过滤器替代方案

    App.filter('strReplace', function () {
      return function (input, from, to) {
        input = input || '';
        from = from || '';
        to = to || '';
        return input.replace(new RegExp(from, 'g'), to);
      };
    });
    

    在您的 HTML 中按如下方式使用它:

    {{ addText | strReplace:'_':' ' }}
    

    小提示:to 参数中的任何 HTML 标记都将导致表达式因 Angular 内容安全规则而失败。

    【讨论】:

    • 我应该在哪里添加 App.filter 代码?以及这是哪个版本的角度..
    • 这适用于 AngularJS 1.x。 App 这里代表您从创建 Angular 应用程序中返回的对象,如下所示:var App = angular.module('myApp', ['some-dependency', 'some-other-dependency']);
    【解决方案3】:

    有一个更简单的方法:

    您可以在没有定义过滤器的情况下内联替换它。就是这样。

    这个例子只是在视图中替换。

    {{ value.replace(/_/g, ' ') }}
    

    我希望它对简单的更改有所帮助,如果您想在更多地方进行更改,请使用过滤器。

    【讨论】:

    • BratisLatas 我喜欢你的方法,但是它似乎只替换了一个实例,而不是多个。
    • 我不认为这是一个有效的角度表达。如果第一个参数是字符串,它确实有效,但如果使用正则表达式,我会得到syntax Error: Token '/' not a primary expression
    • 适用于单个字符替换
    【解决方案4】:

    这个简单的功能就可以做到:

    public getCleanedString(cadena) {
        cadena = cadena.replace(/_/g, ' ');
        return cadena;
      }
    

    【讨论】:

    • 你在回答什么问题?他们想用空格替换下划线。
    【解决方案5】:

    在某些情况下,您可以使用split() 函数。
    .replace 函数不符合正则表达式语法(即.replace(/,/g,'\n') 语法)

    完整语法:
    {{myVar.toString().split(',').join('\n')}}

    .toString() 函数是在 myVar 未在 typescript 中键入为 String 的情况下使用的。

    【讨论】:

    • 这是完美的答案,简单且优化。
    【解决方案6】:

    这是我在 angularjs 1.4.7 中使用的

    <li ng-show="filter.degree.length"> 
        <label>Search by Degree :- </label> {{
            filter.degree.toString().split('|').join(', ')
        }} 
    </li>
    

    【讨论】:

      猜你喜欢
      • 2020-11-04
      • 1970-01-01
      • 2013-11-08
      • 2011-07-12
      • 2016-09-05
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多