仅在管道前后删除空格[重复]
Posted
技术标签:
【中文标题】仅在管道前后删除空格[重复]【英文标题】:Remove spaces only before and after pipe [duplicate] 【发布时间】:2020-10-12 10:18:40 【问题描述】:我有以下字符串,它与管道“|
”分开。
string sample = "SVC1 | SVC2 | SVC3 | SVC1 ";
我需要删除管道前后的空格。我编写了以下正则表达式,它可以正常工作并在逗号 Ex 后删除多余的空格:SVC1 , SVC2 , SVC3 , SVC1
var value = Regex.Replace(sample, " *, *", ",");
如何更改上述正则表达式以使用管道?
【问题讨论】:
要么在创建错误输出之前使用 Trim(),要么拆分并忽略空格: string[] output = input.Split(new char[] ' ', '|' , StringSplitOptions .RemoveEmptyEntries).ToArray();当存在执行任务效率更高的字符串方法时,您不应该使用正则表达式。 【参考方案1】:|
是一个特殊字符,在正则表达式中表示or
,因此需要对其进行转义:\|
string sample = "SVC1 | SVC2 | SVC3 | SVC1 ";
var value = Regex.Replace(sample, @" *\| *", "|");
【讨论】:
我觉得这个正则表达式更优雅一点(\s)?\|(\s)?
测试一下here【参考方案2】:
使用 Linq,
using System;
using System.Linq;
using System.Collections.Generic;
string sample = "SVC1 | SVC2 | SVC3 | SVC1 ";
string result = sample
.Split('|') //Split by pipe
.Aggregate(string.Empty, (x, y) => x + y.Trim()+'|'); //Trim white spaces and concatenate with previous string
Console.WriteLine(result); //Print result
.Net Fiddle
【讨论】:
否决票的任何具体原因? @Flydog57 我的解决方案 only 在管道前后删除空格。如果您是downvoter,请提供您的downvote 反馈【参考方案3】:string output = string.Join('|', sample.Split(new char[] ' ', '|' , StringSplitOptions.RemoveEmptyEntries));
【讨论】:
这将分割所有空间,而不仅仅是管道两侧的空间。 OP 应该至少包含一个包含嵌入空间的子字符串示例,因为他/她的问题是“在管道前后删除空格 only”以上是关于仅在管道前后删除空格[重复]的主要内容,如果未能解决你的问题,请参考以下文章