将字符串分割为仅两部分

19
我想从文本框(txtFrom)中获取一个字符串,并将第一个单词保存下来,将剩下的内容保存到另一个部分中。(剩余的内容是第一个空格后的所有内容)
例如字符串 =“Bob jones went to the store”
array [0] 将给出 “Bob” array [1] 将给出 “jones went to the store”
我知道可以使用 string[] array = txtFrom.Split(' ');,但这会给我一个包含每个单词的长度为6的数组。
6个回答

50

4
您可以将split与join结合使用以获取第一个元素:
string[] items = source.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

string firstItem = items[0];
string remainingItems = string.Join(" ", items.Skip(1).ToList());

你只需要取出第一个项目,然后将其余部分重新组合成字符串即可。

1
我认为你想要在你的Join中使用空格分隔符。 - Jay Riggs
这是一个很好的答案,尽管原帖使用空格作为分隔符而不是逗号。但我认为你的示例已经足够清晰了。 - Pete
是啊,我通常用逗号,我的错!这个世界上有太多逗号分隔的字符串了! - Tejs

3

有一个重载的 String.Split() 方法,它接受一个表示要返回子字符串数量的整数。

因此你的方法调用将变为:string[] array = txtFrom.Text.Split(' ', 2);


2
char[] delimiterChars = { ' ', ',' };
string text = txtString.Text;

string[] words = text.Split(delimiterChars, 2);

txtString1.Text = words[0].ToString();
txtString2.Text = words[1].ToString();

0

你也可以尝试使用正则表达式

Match M = System.Text.RegularExpressions.Regex.Match(source,"(.*?)\s(.*)");
M.Groups[1] //Bob
M.Groups[2] // jones went to the store

正则表达式匹配第一个空格之前的所有内容,并将其存储在第一组中,问号告诉它尽可能匹配最小的内容。第二个子句抓取空格后面的所有内容并将其存储在第二组中。

0
使用长分隔符的方法如下:
public string[] SplitInTwoParts(string source, string delimiter){
    string[] items = source.Split(new string[] { delimiter }, StringSplitOptions.None);

    string firstItem = items[0];
    string remainingItems = string.Join(delimiter, items.Skip(1).ToList());
    return new string[] { firstItem, remainingItems };
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接