2015-05-12 34 views

回答

5

正则表达式是很容易的,但为什么不使用Trim()

var str = "|2P|1|U|F8|"; 
str = str.Trim(new[] {'|'}); 

或只是不new[] {...}

str = str.Trim('|'); 

Ø本安输出:

enter image description here

的情况下有前/后空格,你可以使用链式修剪:

var str = "\r\n |2P|1|U|F8| \r\n"; 
str = str.Trim().Trim('|'); 

输出将是相同的。

+0

你可以简单地写'.Trim('|')'。如果第一个或最后一个值可能为空,这将不起作用:'|| 1 | U | F8 |',但这可能不是问题。 – Kobi

+0

@Kobi:老习惯:)我更新了代码,以便返回预期结果,即使是前导/尾随空格。 –

1
^\||\|$ 

您可以通过empty string。使用逐字mode.See演示尝试this.Replace。

https://regex101.com/r/oF9hR9/14

+0

这不是一个verbatinum模式。它是[verbatim字符串文字](https://msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx)。 –

1

只是删除的起始和结束符。

@"^\||\|$" 

使用下面的正则表达式,然后用空字符串替换匹配。

Regex rgx = new Regex(@"^\||\|$"); 
string result = rgx.Replace(input, ""); 

当您处理多行时使用多线修改器m

Regex rgx = new Regex(@"(?m)^\||\|$"); 

由于|是在正则表达式的特殊字符,你需要按顺序来匹配文字|符号逃离这个。

1
string input = "|2P|1|U|F8|"; 

foreach (string item in input.Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)) 
{ 
    Console.WriteLine(item); 
} 

结果是:

2P 
1 
U 
F8 
1

对于completionists-起见,你也可以使用Mid

Strings.Mid("|2P|1|U|F8|", 2, s.Length - 2) 

这将从第二个字符到先前切出的部分将持续一个并产生正确的输出。

2

您可以使用String.Substring

string str = "|2P|1|U|F8|"; 
string newStr = str.Substring(1, str.Length - 2); 
1

我假设在某些时候你会想分析该字符串以提取其“|”分离的组分,所以这里去另一种选择是去那个方向:

string.Join("|", theString.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries)) 
相关问题