C#使用字符串和正则表达式

时间:2017-03-08 14:37:24

标签: c# regex string

我有这样的字符串

|   7   |      2       |39,93 |

我需要将其拆分为一个数组,其中第一个元素是"7",第二个是"2",第三个是"39,93"

我想出了以下解决方案

var line     =  "|   7   |      2       |39,93 |";
line = line.Remove(0, 1);
string[] arr = Regex.Replace(line, @"\s+", "").Trim().Split('|');

我想知道是否有更好的方法来做到这一点。

2 个答案:

答案 0 :(得分:8)

你不需要正则表达式,你可以使用String.Split和一些LINQ这样做:

var line = "|   7   |      2       |39,93 |";
var array = line.Split(new[] { '|'}, StringSplitOptions.RemoveEmptyEntries)
            .Select(s => s.Trim()).ToArray();

答案 1 :(得分:1)

var output =
    line.Split("|") // split on the pipes
        .Select(x => x.Trim()) // remove excess whitespace from each item
        .Where(x => !string.IsNullOrEmpty(x)) // remove any empty items
        .ToArray(); // convert to array

Regexes在这里并不是很有帮助。你可以用正则表达式做它,但它可能更难阅读。但是它有可能更有效率。你必须测试它。

我预计在开始和结束时出现的空项目需要被丢弃,因为那些初始和终端管道,但如果中间有空元素,你想让你保持原状调整那部分。