9

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

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

我怎样才能只抓住单词,非常,在:#字符之间?

4

8 回答 8

17

您可以将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.

您可以随意使用它。

于 2013-02-10T12:16:26.020 回答
8

这根本不是真正的拆分,因此 usingSplit会创建一堆您不想使用的字符串。只需获取字符的索引,然后使用SubString

int startIndex = text.IndexOf(':');
int endIndex = test.IndexOf('#', startIndex);
string very = text.SubString(startIndex, endIndex - startIndex - 1);
于 2013-02-10T12:15:40.577 回答
5

使用此代码

var varable = text.Split(':', '#')[1];
于 2013-02-10T12:15:44.037 回答
2
Regex regex = new Regex(":(.+?)#");
Console.WriteLine(regex.Match("the dog :is very# cute").Groups[1].Value);
于 2013-02-10T12:14:36.453 回答
2

take a的重载之一- 您可以使用任意数量的字符进行拆分:string.Splitparams char[]

string isVery = text.Split(':', '#')[1];

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

但是,正如@Guffa 在他的回答中指出的那样,您所做的并不是真正的拆分,而是提取特定的子字符串,因此使用他的方法可能会更好。

于 2013-02-10T12:14:40.153 回答
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]);
    }
于 2013-02-10T12:15:56.943 回答
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);
于 2013-02-10T12:18:51.030 回答
0

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

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

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

于 2019-12-17T23:40:32.483 回答