Форум: "Прочее";
Текущий архив: 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