0

我有以下字符串:

This isMyTest testing

结果我想得到 isMyTest 。我只有两个可用的第一个字符(“is”)。单词的其余部分可能会有所不同。

基本上,我需要选择以 chk 开头的由空格分隔的第一个单词。

我从以下开始:

if (text.contains(" is"))
{
text.LastIndexOf(" is"); //Should give me index.
}

现在我找不到这个词的正确边界,因为我需要匹配类似的东西

4

3 回答 3

3

您可以使用正则表达式:

    字符串模式 = @"\bis";
    string input = "这是我的测试测试";
    返回正则表达式匹配(输入,模式);

于 2012-09-20T22:46:15.607 回答
1

您可以使用IndexOf获取下一个空间的索引:

int startPosition = text.LastIndexOf(" is");
if (startPosition != -1)
{
    int endPosition = text.IndexOf(' ', startPosition + 1); // Find next space
    if (endPosition == -1)
       endPosition = text.Length - 1; // Select end if this is the last word?
}
于 2012-09-20T22:30:45.583 回答
1

使用正则表达式匹配怎么样?通常,如果您要在字符串中搜索模式(即以空格开头,后跟其他字符),则正则表达式非常适合这种情况。Regex 语句实际上只在上下文敏感区域(例如 HTML)中崩溃,但非常适合常规字符串搜索。

// First we see the input string.
string input = "/content/alternate-1.aspx";

// Here we call Regex.Match.
Match match = Regex.Match(input, @"[ ]is[A-z0-9]*",     RegexOptions.IgnoreCase);

// Here we check the Match instance.
if (match.Success)
{
    // Finally, we get the Group value and display it.
    string key = match.Groups[1].Value;
    Console.WriteLine(key);
}
于 2012-09-20T22:31:58.733 回答