我对输出代码场景的输入与此类似: 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
答案 0 :(得分:1)
您可以使用正则表达式。
var foo = "one | two | three | four | | | | |";
foo = foo.replace(/(\s?\|)+$/g, '');
console.log(foo); //one | two | three | four
在这里,您可以在javascript中了解有关正则表达式的更多信息。
答案 1 :(得分:1)
不要在数组上执行toString()
和.replace()
,而是使用.join()
。
function transform(stringArray) {
return stringArray.join(" | ");
};
//names = ["morpheus","neo","trinity"]
//output = morpheus | neo | trinity
如果你没有在数组项中传递任何值,它仍会在结尾处输出垂直条形字符。
添加过滤器以移除仅为空格的项目:
function transform(stringArray) {
var filteredArray = stringArray.filter((s)=>(s.trim()));
return filteredArray.join(" | ");
}
答案 2 :(得分:0)
尝试使用切片,如下:
foo = foo.slice(0,-1)