删除字符串JS末尾不需要的垂直条

时间:2016-11-09 19:52:12

标签: javascript angularjs regex

我对输出代码场景的输入与此类似: http://plnkr.co/edit/eBjenGqgo3nbnmQ7XxF1?p=preview

我正在使用AngularJS 1.5.7。我的输入 - (第一个)textarea使用的Ng指令与Plunkr(ng-list,ng-trim ...)中显示的相同。与Plunkr示例不同,我的输出显示在(第二个)textarea中,但逻辑非常相似。 $ scope.outputValue是一个输出数组,我将其转换为字符串,然后实现1个RegExp:

let presentedVC = self.window?.rootViewController?.presentedViewController

问题是生成的字符串总是添加额外的" | "在它自己的最后。如果用户在第一个textarea中传递了几个空数组项,通常输出看起来像这样:

$scope.outputValue  =  $scope.outputValue.toString();
$scope.outputValue  =  $scope.outputValue.replace(/,/g, " | ");

但我真正需要展示的是:

var foo = "one | two | three | four | | | | |";

唯一重要的是删除所有" |"附加到字符串末尾作为'的替代,'但输出可以有" |"因此,值:

var foo = "one | two | three | four";

也是一个有效的输出。

类似的事情发生在Plunkr示例中,因为它生成空数组项并用逗号分隔。

是否有任何可能对此问题有用的RegExp?

谢谢,Nenad

3 个答案:

答案 0 :(得分:1)

您可以使用正则表达式。

 var foo = "one | two | three | four | | | | |";
 foo = foo.replace(/(\s?\|)+$/g, '');
 console.log(foo); //one | two | three | four

在这里,您可以在javascript中了解有关正则表达式的更多信息。

MDN Regular Expressions

MDN String.prototype.replace()

答案 1 :(得分:1)

不要在数组上执行toString().replace(),而是使用.join()

   function transform(stringArray) { 
       return stringArray.join(" | ");
   };

  //names = ["morpheus","neo","trinity"] 
  //output = morpheus | neo | trinity

DEMO on PLNKR

  

如果你没有在数组项中传递任何值,它仍会在结尾处输出垂直条形字符。

添加过滤器以移除仅为空格的项目:

  function transform(stringArray) {
       var filteredArray = stringArray.filter((s)=>(s.trim()));
       return filteredArray.join(" | ");
   }

DEMO on PLNKR

答案 2 :(得分:0)

尝试使用切片,如下:

foo = foo.slice(0,-1)