C#在字符串上查找单词

C#在字符串上查找单词,c#,C#,我正在尝试制作一个程序,构建一个单词字符串,然后在同一个字符串中查找这些单词 问题的前半部分有效,但我对第二部分有问题。程序会第一次和最后一次找到单词,但是,我如何找到最终的中间单词呢?然后,我如何计算它们 string strfinal; string frase = "", texto = ""; string textoAEncontrar; Console.WriteLine("Insira algum texto (car

我正在尝试制作一个程序,构建一个单词字符串,然后在同一个字符串中查找这些单词

问题的前半部分有效,但我对第二部分有问题。程序会第一次和最后一次找到单词,但是,我如何找到最终的中间单词呢?然后,我如何计算它们

        string strfinal;
        string frase = "", texto = "";
        string textoAEncontrar;
        Console.WriteLine("Insira algum texto (carregue no * para terminar a escrita): ");

        for (texto = ""; !texto.Equals("*");)
        {
            texto = Console.ReadLine();
            if (texto.Length < 100)
            {
                frase = frase + " " + texto;
            }
        }


        strfinal = frase.Substring(1, frase.Length - 2);

        Console.WriteLine(strfinal);

        Console.WriteLine("O que deseja encontrar no texto escrito: ");
        textoAEncontrar = Console.ReadLine();
        int primeiraReferenciaNoTexto = strfinal.IndexOf(textoAEncontrar);
        int ultimaReferenciaNoTexto = strfinal.LastIndexOf(textoAEncontrar);


        if (strfinal.Contains(textoAEncontrar))
            {

                Console.WriteLine("A palavra {0} existe no index {1}", textoAEncontrar, primeiraReferenciaNoTexto);
                Console.WriteLine("A palavra {0} existe no index {1}", textoAEncontrar, ultimaReferenciaNoTexto);
            }
            else
            {
                Console.WriteLine("A palavra {0} não existe", textoAEncontrar);
            }



    }
}
stringstrfinal;
字符串frase=“”,texto=“”;
字符串textoancentral;
控制台写入线(“Insira algum texto(卡雷格编号*第四终端):”;
对于(texto=“”;!texto.Equals(“*”))
{
texto=Console.ReadLine();
如果(文本长度<100)
{
frase=frase+“”+texto;
}
}
strfinal=frase.Substring(1,frase.Length-2);
控制台写入线(strfinal);
Console.WriteLine(“O que deseja encontar no texto escrito:”);
textoeancentar=Console.ReadLine();
int primeraireferenceanotexto=strfinal.IndexOf(textoaincentar);
int ultimaReferenciaNoTexto=strfinal.LastIndexOf(textoaincentar);
if(strfinal.Contains(textoancentral))
{
Console.WriteLine(“一个宫殿{0}存在,没有索引{1}”,textoancentral,primerairareferenceanotexto);
Console.WriteLine(“宫殿{0}存在,无索引{1}”)、textoAEncontrar、Ultimareferenceanotexto;
}
其他的
{
Console.WriteLine(“存在的宫殿”,textoaincortar);
}
}
}

您需要链接
IndexOf
调用,如下所示:

var i = -1
while (true)
{
     i = strFinal.IndexOf(textoAEncontrar, i+1);
     if (i == -1) break;
     Console.WriteLine("Found string at {0}", i);
}
您可能需要改进上述边界检查,但这是总体思路。

在这样的时候,您肯定需要这样做。RegEx有一个
.Match
,这可能正是您所需要的

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        Regex regex = new Regex(@"\d+");
        Match match = regex.Match("Dot 55 Perls");
        if (match.Success)
        {
            Console.WriteLine(match.Value);
        }
    }
}
由于我们从字符串中查找数值,因此将得到
55

请参阅下面的链接以了解有关此问题的进一步说明:


您可以创建一个方法来获取字符串中第n次出现的单词的索引。您还可以使用text.Split来计算出现的次数,因为您有一个分隔符字符空间

        static void Main(string[] args)
        {    
            string text = "apple cinder apple goat apple";
            string searchWord = "apple";

            string[] textSplit = text.Split(' ');

            int searchResultCount = textSplit.Where(s => s == searchWord).Count();

            Console.WriteLine(text);
            Console.WriteLine(searchWord);
            Console.WriteLine(searchResultCount);
            Console.WriteLine(IndexOfOccurence(text, searchWord, 2));

            Console.ReadLine();
        }

        static int IndexOfOccurence(string s, string match, int occurence)
        {
            int i = 1;
            int index = 0;

            while (i <= occurence && (index = s.IndexOf(match, index)) != -1)
            {
                if (i == occurence)
                   return index;
                index++;
                i++;
            }

            return -1;
        }
static void Main(字符串[]args)
{    
string text=“苹果渣苹果山羊苹果”;
字符串searchWord=“apple”;
字符串[]textSplit=text.Split(“”);
int searchResultCount=textSplit.Where(s=>s==searchWord.Count();
控制台写入线(文本);
Console.WriteLine(搜索词);
Console.WriteLine(searchResultCount);
Console.WriteLine(索引聚焦(文本,搜索词,2));
Console.ReadLine();
}
静态int索引聚焦(字符串s、字符串匹配、int出现)
{
int i=1;
int指数=0;
而