Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];

Вниз

Регэксп   Найти похожие ветки 

 
Kerk ©   (2009-10-07 16:20) [0]

Товарищи, можно ли регэкспом проверить строку на то, что она состоит больше, чем из N разных символов? Ничего в голову не приходит что-то.


 
Kolan ©   (2009-10-07 16:41) [1]

Почему-то мне кажется, что циклом быстрее будет по всем параметрам.


 
TUser ©   (2009-10-07 16:48) [2]

В смысле? Что символов больше N и все они различны или что всего разных символов там больше N?

В первом случае - отсортируй их. Во втором, - тоже :)


 
TUser ©   (2009-10-07 16:53) [3]

ой, регэксп :)


 
Kerk ©   (2009-10-07 16:55) [4]


> TUser ©   (07.10.09 16:48) [2]
> В смысле? Что символов больше N и все они различны или что
> всего разных символов там больше N?

Общее число символов мне без разницы. Мне интересно сколько в этой строке разных символов. Например, в "мама мыла раму" 7 разных символов, включая пробел.


 
KSergey ©   (2009-10-07 16:57) [5]

регексп спицально придумал для сложного стандартного решения простых задач.
Я это давно заметил.


 
clickmaker ©   (2009-10-07 17:01) [6]

массив из 256 элементов. Индекс - код символа.
Идем по строке, выбирая символы. Если ячейка массива пуста - символ новый, увеличиваем счетчик.


 
Медвежонок Пятачок ©   (2009-10-07 17:11) [7]

var InStr : string;
begin
InStr := "Скока же здеся разных символов и не очень разных?";
with TRegExpr.Create do
 try
  Expression := "(.).*\1";
  while (Length(InStr) > 0) and Exec(InStr) do InStr := ReplaceRegExpr(Match[1],InStr,"");
  ShowMessage(Format("А вот скока %d",[Length(InStr)]));
 finally
  Free;
 end;


 
Медвежонок Пятачок ©   (2009-10-07 17:22) [8]

регексп спицально придумал для сложного стандартного решения простых задач.

регексп спицально придуман для простого решения самых разных по сложности задач.


 
McSimm ©   (2009-10-07 17:29) [9]


> проверить строку на то, что она состоит больше, чем из N
> разных символов?


/(.).*([^\1]).*([^\1\2]).*([^\1\2\3]).*([^\1\2\3\4]).*([^\1\2\3\4\5]).*([^\1\2\3\ 4\6]).*([^\1\2\3\4\5\6\7]).*/

:)


 
Kerk ©   (2009-10-07 17:33) [10]

В общем, в итоге я сделал так

 $count = 0;

 while (mb_strlen($c) > 0)
 {
   $c = mb_eregi_replace(mb_substr($c,0,1), "", $c);
   $count++;
 }


 
test ©   (2009-10-07 21:18) [11]

Kerk ©   (07.10.09 16:20)  
[A-Za-z ]{10}
Только 10 символов с пробелами на латинице.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
2-1256018021
Джон Сильвер
2009-10-20 09:53
2009.12.06
Назначение прав доступа NTFS для групп


2-1256036827
Pascal96
2009-10-20 15:07
2009.12.06
Задачка на Pascal


15-1254831159
Kolan
2009-10-06 16:12
2009.12.06
Как тестировать не публичные методы?


2-1255860293
A.L.E.X.A.N.D.E.R.
2009-10-18 14:04
2009.12.06
Реализация float8/16/24


15-1254694926
Германн
2009-10-05 02:22
2009.12.06
Планировщик Windows





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский