如何使用C#仅拆分一次字符串?

15

例子:a - b - c 应该拆分成 a 和 b - c,而不是 3 个子字符串。


这个标签为“编程”的问题超过了1000个,真是太棒了!我刚刚去查了一下有多少个标签为“问题”的问题,结果也有不少呢!@Jon:顺便说一下,SO网站始终关注编程问题,非编程问题很快就会被投票关闭。 - AnthonyWJones
...但只有15个问题被标记为“question” ;) - Guffa
7个回答

33

指定您想要的最大项目数量:

string[] splitted = text.Split(new string[]{" - "}, 2, StringSplitOptions.None);

4
如果我要为数组变量命名的话,我个人会选择"splat"......如果你要编造一个词,我建议大胆尝试! - Max Schilling
1
顺便提一下,答案中的2表示要返回的子字符串数量! - Aimal Khan

16
string s = "a - b - c";
string[] parts = s.Split(new char[] { '-' }, 2);
// note, you'll still need to trim off any whitespace

4
"a-b-c".Split( new char[] { '-' }, 2 );

2
您可以使用indexOf()方法找到要拆分的字符的第一个实例,然后使用substring()方法获取两个方面。例如...
int pos = myString.IndexOf('-');
string first = myString.Substring(0, pos);
string second = myString.Substring(pos);

这只是一个粗略的例子 - 如果你不想在其中包含分隔符,你需要进行调整 - 但你应该可以从中得到灵感。


1
string[] splitted = "a - b - c".Split(new char[]{' ', '-'}, 2, StringSplitOptions.RemoveEmptyEntries);

0
var str = "a-b-c";
int splitPos = str.IndexOf('-');
string[] split = { str.Remove(splitPos), str.Substring(splitPos + 1) };

0

我加入比较晚,上面的许多答案都已经与我的想法相匹配:

字符串有它自己的

Split

你可以使用它来找到解决方案,以下是针对你问题的示例:

using System;

public class Program
{
    public static void Main()
    {
        var PrimaryString = "a - b - c";
        var strPrimary  = PrimaryString.Split( new char[] { '-' }, 2 );
        Console.WriteLine("First:{0}, Second:{1}",strPrimary[0],strPrimary[1]);

    }
}

Output:
First:a , Second: b - c

这将为您提供一个包含 [a,b,c] 而不是 [a,b-c] 的数组。另外,语言错误。 - Jamie Rees
感谢@JamieR的引用。我已经更正了我的答案。 - Gaurav Arora

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