C#:通过检测空格来解析字符串中的子字符串

时间:2010-02-10 08:03:38

标签: c# regex string

如果我有各种字符串,其中有文本后跟空格后跟文本,我如何解析从第二个文本块中的第一个字符开始的子字符串?

例如: 如果我有字符串:
    “stringA stringB”

如何提取子字符串
    “stringB”

字符串的长度各不相同,但都是格式的。

我确信这可以通过正则表达式轻松完成,但我无法找到适合c#的语法。

4 个答案:

答案 0 :(得分:2)

不需要RegEx,只需拆分它。

var test = "stringA stringB";
var second = test.Split()[1];

如果你在美妙的LINQ-land

var second = "string1 string2".Split().ElementAtOrDefault(1);

并使用RegEx(完整性)

var str2 = Regex.Match("str1 str2", @"\w (.*$)").Groups[1].Value;

答案 1 :(得分:1)

使用string.Split()

var test = "stringA stringB";
var elements = test.Split(new[]
{
    ' '
});
var desiredItem = elements.ElementAtOrDefault(1);

如果你想捕获所有空格(msdn tells us more):

var test = "stringA stringB";
//var elements = test.Split(); // pseudo overload
var elements = test.Split(null); // correct overload
var desiredItem = elements.ElementAtOrDefault(1);

修改
为什么伪过载?

  • .Split()汇编为.Split(new char[0])
  • 未在MSDN
  • 中记录

答案 2 :(得分:0)

如果所有字符串都由空格分隔,则此处不需要正则表达式。你可以使用Split()方法:

string[] result = { };
string myStrings = "stringA stringB stringC";
result = myStrings.Split(' ');

答案 3 :(得分:-1)

您不需要事件Split()。我认为一个简单的IndexOf / Substring就可以完成这项工作。

        var input = "A B";
        var result = string.Empty;
        var index = input.IndexOf(' ');
        if (index >= 0)
        {
            result = input.Substring(index + 1);
        }