C# 仅删除管道前后的空间
我有以下字符串,它与管道“C# 仅删除管道前后的空间,c#,.net,regex,replace,whitespace,C#,.net,Regex,Replace,Whitespace,我有以下字符串,它与管道“|”分开 我需要删除管道前后的空格。我编写了以下正则表达式,它运行良好,并删除了逗号Ex之后的额外空间:SVC1、SVC2、SVC3、SVC1 var value = Regex.Replace(sample, " *, *", ","); 如何更改上面的正则表达式以使用管道?是一个特殊字符,在正则表达式中表示或,因此需要对其进行转义:\\ string sample = "SVC1 | SVC2 | SVC3 | S
|
”分开
我需要删除管道前后的空格。我编写了以下正则表达式,它运行良好,并删除了逗号Ex之后的额外空间:SVC1、SVC2、SVC3、SVC1
var value = Regex.Replace(sample, " *, *", ",");
如何更改上面的正则表达式以使用管道?
是一个特殊字符,在正则表达式中表示或,因此需要对其进行转义:\\
string sample = "SVC1 | SVC2 | SVC3 | SVC1 ";
var value = Regex.Replace(sample, @" *\| *", "|");
使用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
我认为这个正则表达式更优雅一些。(\s)?\\\\\(\s)?
测试它,或者在创建错误的输出之前使用Trim(),或者分割并忽略空格:string[]output=input.split(新字符[]{','.'},StringSplitOptions.removemptyEntries.ToArray();当有更有效的字符串方法执行任务时,不应该使用正则表达式。这将在所有空间上分割,而不仅仅是管道两侧的空间。OP应该至少包含一个包含嵌入空格的子字符串示例,因为他/她的问题是“仅在管道前后删除空格”是否有向下投票的具体原因@Flydog57我的解决方案仅删除管道前后的空间。如果您是下一个投票人,请您提供下一个投票的反馈
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
string output = string.Join('|', sample.Split(new char[] { ' ', '|' }, StringSplitOptions.RemoveEmptyEntries));