2013-07-09 4 views
0

У меня есть программа, которая принимает URL-адрес (пример: care.org), получает источник страницы URL-адреса и выполняет некоторые вычисления.Функция разделения в C#

string text = <the page source of care.org> 
    string separator = "car"; 
    var cnt = text.ToLower().Split(separator,StringSplitOptions.None); 

Моя цель состоит в том, чтобы подсчитать число вхождение в «автомобиль» в исходный код страницы, Мой код рассматривает уход как «автомобиль» | «е» он раскалывает это следующим образом .. Но я хочу это рассмотреть весь Seperator как единое целое и сделать splittin

Пожалуйста, помогите мне с этим

+1

Это выглядит как работа для [регулярных выражений] (http://answers.oreilly.com/topic/217-how-to-match-whole-words-with-a-regular-expression/). – Corak

+0

Я хочу использовать функцию split ничего больше –

+2

Вы также используете отвертку для забивания гвоздя? Используйте наиболее подходящий инструмент для задачи. Регулярные задачи были разработаны именно для этих задач. – Corak

ответ

1

Вы должны использовать reular выражения вместо раскола() метод:

Regex regex = new Regex(@"\bcar\b"); // you should modify it if `car's` needed 

Match match = regex.Match(text); 
int cnt = 0; 

while (match.Success) 
{ 
    cnt++; 
    match = match.NextMatch(); 
} 

// here you get count of `car` in `cnt` 
+0

Можете ли вы показать мне, как достичь этого, используя функцию split –

+0

check: 'var cnt = text.ToLower(). Split (разделитель, Int32.MaxValue , StringSplitOptions.None) .Count; ' – YD1m

+0

Без брата эффекта. –

0

Split возвращает массив строк, вы можете просто подсчитать результаты.

var cnt = text.ToLower().Split(separator,StringSplitOptions.None).count; 
+0

будет ли он рассматривать уход в целом как в моем примере. Поскольку я не хочу, чтобы граф заботился, я хочу подсчет автомобиля. Он показывает мне счет ухода таким образом –

+0

как насчет использования regex.split? http://msdn.microsoft.com/en-us/library/vstudio/8yttk7sy%28v=vs.90%29.aspx – Winks

1

Это, как можно добиться того, что вы хотите с помощью RegularExpressions:

string text = "the page source of care.org"; 
string separator = @"\bcar\b"; 
MatchCollection resultsarray = Regex.Matches(text, separator); 

Теперь resultsarray содержит ваши матчи. Вы можете считать это с помощью

resultsarray.Count 
+0

В основном это. Но если я правильно понимаю, OP хочет совместить «автомобиль» и «не» «заботиться», поэтому «Позаботьтесь о своем автомобиле и позаботьтесь о своей кошке». должен иметь только одно совпадение. – Corak

+0

@Corak Хорошее наблюдение. Я исправил его – Shaharyar

0

Я не думаю, что вам нужно разделить, так как вы ничего не будете делать с подстрокой. Вы хотите только подсчет, так что посмотрите на использование RegEx.Matches(text, "car[^a-zA-Z0-9]") или аналогичный, чтобы определить интересующие вас шаблоны. Удачи!