Главная страница
    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.004 c
2-1255876581
kodius
2009-10-18 18:36
2009.12.06
Перебор всех значений в stringgrid


4-1222413068
Riply
2008-09-26 11:11
2009.12.06
RtlCopyUnicodeString и IRQL


11-1208955774
andreil
2008-04-23 17:02
2009.12.06
Как указать цвет пикселя 8-битному изображению?


15-1254947408
Юрий
2009-10-08 00:30
2009.12.06
С днем рождения ! 8 октября 2009 четверг


2-1256063307
Novii
2009-10-20 22:28
2009.12.06
Bitmap and Bitmap





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский