Вниз
Скачать: CL | DM;

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

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.007 c
2-1255701197
Артём
2009-10-16 17:53
2009.12.06
Динамические окна


15-1254495687
Cyrax
2009-10-02 19:01
2009.12.06
Кто-нибудь знает, что такае "партномер" ?


2-1255932245
Фуфик
2009-10-19 10:04
2009.12.06
последняя строка Excel


8-1190053070
Дельфин
2007-09-17 22:17
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




   Наверх