如何在不同的字符之间拆分字符串

时间:2013-02-10 12:12:52

标签: c# string split

我在分割字符串时遇到问题。我想只拆分两个不同字符之间的单词:

 string text = "the dog :is very# cute";

如何在:#字符之间只抓取非常的字词?

8 个答案:

答案 0 :(得分:11)

您可以将String.Split()方法与params char[];

一起使用
  

返回包含此实例中的子字符串的字符串数组   由指定的Unicode字符数组的元素分隔。

string text = "the dog :is very# cute";
string str = text.Split(':', '#')[1]; // [1] means it selects second part of your what you split parts of your string. (Zero based)
Console.WriteLine(str);

这是DEMO

您可以随心所欲地使用它。

答案 1 :(得分:8)

这根本不是一个分裂,所以使用Split会创建一堆你不想使用的字符串。只需获取字符的索引,然后使用SubString

int startIndex = text.IndexOf(':');
int endIndex = test.IndexOf('#', startIndex);
string very = text.SubString(startIndex, endIndex - startIndex - 1);

答案 2 :(得分:5)

使用此代码

var varable = text.Split(':', '#')[1];

答案 3 :(得分:2)

overloads string.Split中的一个params char[]需要string isVery = text.Split(':', '#')[1]; - 您可以使用任意数量的字符进行拆分:

{{1}}

请注意,我正在使用该重载并从返回的数组中获取第二个项。

然而,正如@Guffa在his answer中所指出的,你所做的并不是真正的分裂,而是提取特定的子字符串,所以使用他的方法可能会更好。

答案 4 :(得分:1)

Regex regex = new Regex(":(.+?)#");
Console.WriteLine(regex.Match("the dog :is very# cute").Groups[1].Value);

答案 5 :(得分:1)

这有用吗:

    [Test]
    public void split()
    {
        string text = "the dog :is very# cute"  ;

        // how can i grab only the words:"is very" using the (: #) chars. 
        var actual = text.Split(new [] {':', '#'});

        Assert.AreEqual("is very", actual[1]);
    }

答案 6 :(得分:1)

使用String.IndexOfString.Substring

string text = "the dog :is very# cute"  ;
int colon = text.IndexOf(':') + 1;
int hash = text.IndexOf('#', colon);
string result = text.Substring(colon , hash - colon);

答案 7 :(得分:0)

我只会使用string.Split两次。获取第一个分隔符右侧的字符串。然后,使用结果将字符串移到第二个分隔符的左侧。

string text = "the dog :is very# cute"; 
string result = text.Split(":")[1] // is very# cute";
                    .Split("#")[0]; // is very

它避免使用索引和正则表达式,从而使IMO更具可读性。