如何拆分具有多个分隔符的行?

时间:2014-02-14 20:25:24

标签: c# string parsing

我想解析一条与下面类似的行。

  

头等邮件(加拿大)(15.00)

从上面一行我只想要15.00

如何使用string.Split();

4 个答案:

答案 0 :(得分:3)

如果您不想要这些物品,为什么要拆分?

如果是这种情况,则使用正则表达式提取值15.00。以下模式基本上是说找到一组带有句点的数字,以set模式指定[\d.]以下是+,其中说明之前的 >匹配1或更多。使用该模式,它将捕获句子的数字部分。

Regex.Match("First Class Mail (Canada) (15.00)", @"[\d.]+").Value 

但是,如果句子中可能包含其他数字,则必须使用pattern数字规范更具体。有了这个想法,我们将精确地拼出数字模式,而不是仅仅在上面的set中找到它。在这里,我们查找一个数字,一个或多个,然后是一个句点,然后是两个数字:

Regex.Match("1st Class Mail (Canada) (15.00)", @"\d+\.\d\d").Value

如果您确实需要其他项目,则可以创建新模式。

答案 1 :(得分:3)

我想出了一些简单的事情:

var str = "First Class Mail (Canada) (15.00)";
var result = str.Split(new[] {'(', ')'})[3];

假设所有数据的格式都相同。

答案 2 :(得分:0)

试试这个

var str = "First Class Mail (Canada) (15.00)";
var result = str.Split(new[] {' ', '(', ')'},StringSplitOptions.RemoveEmptyEntries)
                .First(x => x.Replace(".", "").All(char.IsDigit));

答案 3 :(得分:0)

string str = "First Class Mail (Canada) (15.00)";
        var array = Regex.Split(str, @"[^0-9\.]+")
    .Where(c => c != "." && c.Trim() != "");