2013-11-30 5 views
1
string containsCharacter = textBox1.Text; 
string testString = "test string contains certain characters"; 
int count = testString.Split(containsCharacter).Length - 1; 

Я первоначально вытащил этот код из ответа на вопрос другого человека, но он, похоже, не работает с текстовыми полями.Как проверить количество вхождений определенной строки в другую строку?

Ошибки я получаю:

The best overloaded method match for 'string.Split(params char[])' has some invalid arguments 
Argument 1: cannot convert from 'string' to 'char[]' 

Я предпочитаю, чтобы исправить этот код, а не использовать другие вещи, как LINQ, но я принимаю его, если это не способ, чтобы исправить этот код.

+0

Возникновение чего? –

+0

@JeroenVannevel Записи определенного символа в этой строке. – puretppc

+1

@puretppc - Вы должны передать параметр char как параметр, а не строку. –

ответ

2

Используемая вами версия Split ожидает ввода символа. Это версия для строк:

string containsText = textBox1.Text; 
    string testString = "test string contains certain characters"; 
    int count = testString.Split(new string[]{containsText}, StringSplitOptions.None).Length - 1; 

С помощью этого кода count будет: 1, если textBox1.Text включает в себя «тест», 6, если он содержит «T», и т.д. То есть, он может иметь дело с какой-либо строки (длина которого может быть одной, как единый символ, или такой большой, как требуется).

3
string containsCharacter = "t"; 
string testString = "test string contains certain characters"; 
int count = testString.Count(x => x.ToString() == containsCharacter); 

Этот пример возвратит 6.

+0

А как насчет того, хотите ли вы узнать количество раз, которое« тест »появляется в testString? – varocarbas

+0

Ваш код ищет символы (это то, что есть X), и, если вы не можете найти персонажа, являющегося «тестом», я боюсь, что он не сработает. – varocarbas

+1

Тогда вместо этого я использовал бы регулярное выражение. Что-то вроде Regex.Matches (testString, «test»). Считайте и правильно выйдите из строки test-for. – Johnbot

1

Вы можете позвонить ToCharArray на string, чтобы сделать его char[], как это:

int count = testString.Split(containsCharacter.ToCharArray()).Length - 1; 

Поскольку Split принимает символы как param, вы могли бы перепишите это, указав непосредственно считанные символы следующим образом:

int count = testString.Split(',', ';', '-').Length - 1; 
1
"this string. contains. 3. dots".Split(new[] {"."}, StringSplitOptions.None).Count() - 1 
5

Вы можете перебирать символы

 string value = "BANANA"; 
     int x = 0; 
     foreach (char c in value) 
     { 
      if (c == 'A') 
       x++; 
     } 
+2

+1 Старый школьный код .. Я бы использовал 'x ++' над 'x + = 1' :) –

+1

@SriramSakthivel хороший, не знал этого, обновил мой код :) – weeksdev

+0

Если вы хотите проверить« AN »вместе как это будет сделано? – puretppc

1

Edit: При более внимательно Чтения кода я предлагаю вам это, вы должны перефразировать свой вопрос «Проверить количество вхождений определенная строка в другой строке ":

string containsString = "this"; 
string test = "thisisateststringthisisateststring"; 
var matches = Regex.Matches(test,containsString).Count; 

совпадение - 2!

Мой первоначальный пост отвечает на ваш актуальный вопрос «вхождения определенного символа в строке»:

string test = "thisisateststring"; 
int count = test.Count(w => w == 'i'); 

Граф является 3!

Смежные вопросы