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

C# 如何在不同字符之间拆分字符串,c#,string,split,C#,String,Split,我分线有困难。我只想将单词分成两个不同的字符: string text = "the dog :is very# cute"; 在:和#字符之间,我怎样才能只抓住单词,是非常重要的 其中一个采用参数char[]-您可以使用任意数量的字符进行拆分: Regex regex = new Regex(":(.+?)#"); Console.WriteLine(regex.Match("the dog :is very# cute").Groups[1].Value); string isVery

我分线有困难。我只想将单词分成两个不同的字符:

 string text = "the dog :is very# cute";
#
字符之间,我怎样才能只抓住单词,是非常重要的

其中一个采用
参数char[]
-您可以使用任意数量的字符进行拆分:

Regex regex = new Regex(":(.+?)#");
Console.WriteLine(regex.Match("the dog :is very# cute").Groups[1].Value);
string isVery = text.Split(':', '#')[1];
请注意,我正在使用该重载并从返回的数组中获取第二项


然而,正如@Guffa在中所指出的,您所做的不是真正的拆分,而是提取一个特定的子字符串,因此使用他的方法可能更好。

这根本不是真正的拆分,因此使用
split
将创建一组您不想使用的字符串。只需获取字符的索引,并使用
子字符串

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

var varable = text.Split(':', '#')[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]);
    }
您可以将方法与
参数char[]
一起使用

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

这是一本书


您可以使用任意数量的字符串。

使用
String.IndexOf
String.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);
我就用两次。获取第一个分隔符右侧的字符串。然后,使用结果,获取第二个分隔符左侧的字符串

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

它避免了使用索引和正则表达式,这使得它在我看来更具可读性。

注意:这还将捕获字符之间的字符串,这些字符串不符合问题中指定的顺序,例如
中的
is
“This#is#a:test#”。
string text = "the dog :is very# cute"; 
string result = text.Split(":")[1] // is very# cute";
                    .Split("#")[0]; // is very