【问题标题】:Remove empty, double qoutes, and separate by comma删除空、双引号,并用逗号分隔
【发布时间】:2018-10-24 06:46:30
【问题描述】:

我在表格中显示时需要清理这些数据,这是输出

"eer""rrr""dff""""""""""""

我需要做的是删除空,删除双引号,并用逗号分隔,类似

  err,rrr,dff

我试过了

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

@Pipe({
   name: 'pickups'
})
export class PickupPipe implements PipeTransform {
  transform(value: string, args?: any) {
      if (!value) {
          return null;
       } else {
         return value.replace(/"/g, ",");
     }
 }
}

现在使用

   <span *ngFor="let pickup of row.pickups">{{pickup.pickup_facility | pickups }}</span>

它确实删除了 qoutes 并为空,但没有用逗号分隔,这是结果

errrrdff

【问题讨论】:

  • 你有没有尝试过?

标签: javascript angular ecmascript-6 angular-pipe


【解决方案1】:

只需用逗号替换所有引号,然后用单个逗号替换多个逗号的任何序列。这将导致字符串的开头和结尾出现逗号,因此您可以使用子字符串删除这些逗号。

let text = `"eer""rrr""dff"""""""""""`
let replaced = text.replace(/"/g, ',').replace(/,+/g, ',')
replaced = replaced.substring(1, replaced.length - 1)

console.log(replaced);

【讨论】:

【解决方案2】:

应该这样做:

const text = '"eer""rrr""dff"""""""""""'
const result = text.match(/"[^"]*"/g)
                   .map(x => x.slice(1, -1)) // remove quotes
                   .filter(Boolean) // remove empty
                   .join(',') // separate with comma

【讨论】:

  • @rai 抱歉,我不知道角管。传递给transform的值是什么,函数需要返回什么?
  • 管道基本上就像一个辅助函数,在这种情况下称为拾音器。例如,在 es6 中,我有一个名为 row 的对象数组,其中包含拾音器。内部拾音器是值“eer”、“rrr”、“dff”和一些空值。所以我真正需要的是,在循环结果时,我应该应用拾取函数,以便 1. 它将删除空值,2. 用逗号分隔结果值。类似于 for(const a of row.pickups){result = a then;然后result会调用picks函数}
【解决方案3】:

要达到预期效果,请使用以下选项

  1. 第一个逗号分隔所有字符串
  2. 删除空字符串
  3. 清除首尾双引号
  4. 删除最后一个逗号

var test = '"eer""rrr""dff"""""""""""'
           .replace(/""/g,',')  //first comma separating all strings 
           .replace(/,,/g,'')   // removing empty strings
           .replace(/"/g,'')    // clearing initial and last double quotes
           .slice(0, -1);;      // removing last comma

console.log(test);

代码示例 - https://codepen.io/nagasai/pen/BxPpoB?editors=1010

【讨论】:

    【解决方案4】:

    您可以用逗号替换"的所有序列,然后从开头和结尾删除冒号:

    const str = '"eer""rrr""dff"""""""""""'
    const result = `"${str}"`.replace(/""*/g, ',').slice(1, -1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      相关资源
      最近更新 更多