正则表达式匹配字符串

时间:2015-08-12 14:28:58

标签: c# regex visual-studio

我有以下数据的字符串数组:

'STSO/82465'
'CPB'
550
'B'
'IEC2'
'IEC2'
50
525
680
1550,1175
'500000/V3'
'23585/V3'
''
etc...

标有''的位置字符串休息是双倍的,我需要正则表达式的帮助才能获得字符串。

3 个答案:

答案 0 :(得分:3)

为什么你需要正则表达式?

double d;
string[] noDoubles = Array.FindAll(arr, s => !double.TryParse(s, out d));

这接受当前文化的小数分隔符。如果使用double.TryParse的重载,则可以更改它。您的样本数据表明,您似乎是,

如果您想允许点作为小数分隔符:

Array.FindAll(arr, s => !double.TryParse(s, NumberStyles.Any, NumberFormatInfo.InvariantInfo, out d));

如果非双打真正开始使用',你也可以更简单:

string[] noDoubles = Array.FindAll(arr, s => s.StartsWith("'"));

答案 1 :(得分:1)

String StartsWith EndsWith方法可以解决问题:

var tab = new[]
        {
            "'STSO/82465'",
            "'CPB'",
            "550",
            "'B'",
            "'IEC2'",
            "'IEC2'",
            "50",
            "525",
            "680",
            "1550,1175",
            "'500000/V3'",
            "'23585/V3'"
        };
        foreach (var s in tab)
        {
            if (s.StartsWith("'") && s.EndsWith("'"))
            {
                //use the s
            }
        }

答案 2 :(得分:1)

LINQ one-liner:

var linesWithStrings = allLines.Where( l => l.StartsWith( "'" ) );

或者,如果你想剥去引号:

var linesWithStrings = from s in allLines
                       where s.Length >= 2 && s.StartsWith( "'" ) && s.EndsWith( "'" )
                       select s.Substring( 1, s.Length - 2 );