正则表达式忽略第一个和最后一个终止符

时间:2015-05-12 06:20:27

标签: c# regex

我在文本中使用|作为分隔符。

示例:

|2P|1|U|F8|

我希望结果为2P|1|U|F8。我怎么能这样做?

7 个答案:

答案 0 :(得分: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('|');

输出将是相同的。

答案 1 :(得分:2)

您可以使用String.Substring

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

答案 2 :(得分:1)

^\||\|$

你可以试试这个。empty string。使用逐字模式。参见演示。

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

答案 3 :(得分:1)

只需删除开始和结束分隔符。

@"^\||\|$"

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

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

当你处理多行时使用mulitline修饰符m

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

由于|是正则表达式中的特殊字符,因此您需要按顺序对其进行转义以匹配文字|符号。

答案 4 :(得分:1)

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

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

结果是:

2P
1
U
F8

答案 5 :(得分:1)

对于完成者而言,您也可以使用Mid

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

这将从第二个字符切割到前一个到最后一个字符并产生正确的输出。

答案 6 :(得分:1)

我假设在某些时候你会想要解析字符串以提取其字符串|'分开的组件,所以这里是另一个方向:

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