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;
而