Прежде всего, вы не должны бросать в char
ваших ss[i]
или других. ss[i]
и другие уже есть char
.
В какой-то момент вы пытаетесь объединить два символа (ss[i+1]
и ss[i+2]
) в вашем цикле if и после проверки равенства с string
. Это не верно. Измените это;
if ((ss[i] == '0') && (ss[i + 1] == '9') && (ss[i + 2]) == '1')
Console.WriteLine("found");
В третий, который я считаю, что самое главное, не писать код, как этот. Вы можете легко использовать метод String.Contains
, который делает именно то, что вы хотите.
Возвращает значение, указывающее, возникает ли указанный объект String внутри этой строки.
string ss = "fc7600109177";
bool found = ss.Contains("091");
Здесь в DEMO
.
использование «содержат» возвращать только истина или ложь и «индекс» обратного расположения строки, но я хочу, чтобы найти местоположение «091» в сс, и если «091» повторить, как: сс = "763091d44a0914 «Как я могу найти второй« 091 »?
Здесь вы можете найти все индексы в своей строке;
string chars = "091";
string ss = "763091d44a0914";
List<int> indexes = new List<int>();
foreach (Match match in Regex.Matches(ss, chars))
{
indexes.Add(match.Index);
}
for (int i = 0; i < indexes.Count; i++)
{
Console.WriteLine("{0}. match in index {1}", i+1, indexes[i]);
}
Выход будет;
1. match in index: 3
2. match in index: 10
Здесь в DEMO
.
с большим спасибо – zozo
использования содержит возвращать только истинные или fulse – zozo
@ZainabJawad Так ..? Разве ты этого не хочешь? –