我想传递字符串List并从另一个字符串中获取它的计数。
示例:字符串很简单,很复杂。
从这里我想要的是来自3的字符串的数量。我已经得到了这个的解决方案
public static void Main()
{
string s1;
Console.WriteLine("Enter the String : ");
s1 = Console.ReadLine();
Console.WriteLine(counting.StringMatch(s1, "is"));
Console.ReadLine();
}
public static class counting
{
public static int StringMatch(string text, string pattern)
{
int count = 0;
int i = 0;
while ((i = text.IndexOf(pattern, i)) != -1)
{
i += pattern.Length;
count++;
}
return count;
}
}`
现在因为我只传递了一个“is”的值,所以我如何传递多个“is”“和”我试图传递字符串列表的值。
public static void Main()
{
string s1;
Console.WriteLine("Enter the String : ");
s1 = Console.ReadLine();
List<string> lst = new List<string>();
lst.Add("or");
lst.Add("the");
Console.WriteLine(counting.StringMatch(s1, lst));
Console.ReadLine();
}
public static class counting
{
public static int StringMatch(string text, List<string> pattern)
{
int count = 0;
int i = 0;
while ((i = text.IndexOf(pattern, i)) != -1)
{
i += pattern.Length;
count++;
}
return count;
}
}
获取错误可能是错误的做法,我该如何处理这种情况。
答案 0 :(得分:1)
String.IndexOf
方法没有任何带有任何字符串集合的重载。您需要一个方法来查找列表中的每个字符串并返回第一个字符串:
public static class counting {
private static int IndexOf(string text, List<string> pattern, int startIndex, out string match) {
int firstIndex = -1;
match = null;
foreach (string s in pattern) {
int index = text.IndexOf(s, startIndex);
if (index != -1 && (firstIndex == -1 || index < firstIndex)) {
firstIndex = index;
match = s;
}
}
return firstIndex;
}
public static int StringMatch(string text, List<string> pattern) {
int count = 0;
int i = 0;
string match;
while ((i = IndexOf(text, pattern, i, out match)) != -1) {
i += match.Length;
count++;
}
return count;
}
}