Existe uma pesquisa de seqüência de caracteres Boyer-Moore, uma função de pesquisa rápida e substituição e uma contagem rápida de seqüências para Delphi 2010 String (UnicodeString) por aí?

Preciso de três funções de seqüências rápidas em grandes: pesquisa rápida, pesquisa e substituição rápidas e contagem rápida de substrings em uma sequência.

Encontrei as pesquisas de string Boyer-Moore em C ++ e Python, mas o único algoritmo Delphi Boyer-Moore usado para implementar a pesquisa rápida e a substituição que encontrei faz parte do FastStrings de Peter Morris, ex-software DroopyEyes, e seu site. e o email não estão mais funcionando.

Eu já portadoFastStrings encaminhar para o trabalho excelente para AnsiStrings no Delphi 2009/2010, onde um byte é igual a um AnsiChar, mas fazê-los também trabalhar com a String (UnicodeString) no Delphi 2010 parece não trivial.

Usando esse algoritmo de Boyer-Moore, deve ser possível realizar pesquisas sem distinção entre maiúsculas e minúsculas, bem como pesquisar e substituir sem distinção entre maiúsculas e minúsculas, sem nenhuma string temporária (usando StrUpper etc) e sem chamar Pos () mais lento que Boyer- Moore pesquisando quando pesquisas repetidas sobre o mesmo texto são necessárias.

(Edit: Eu tenho uma solução parcial, escrita como resposta a esta pergunta, está quase 100% concluída, possui até uma função de substituição rápida de cadeias. Acredito que DEVE ter erros e, principalmente, porque ela finge ser Unicode capaz de haver falhas devido a promessas não cumpridas do Unicode.)

(Edit2: resultado interessante e inesperado; o tamanho grande da pilha de uma tabela de ponto de código unicode na pilha - SkipTable no código abaixo coloca um sério prejuízo na quantidade de otimização ganha-ganha-otimizada que você pode fazer aqui em uma cadeia de caracteres unicode Obrigado por Florent Ouchet por apontar o que eu deveria ter notado imediatamente.)

questionAnswers(2)

yourAnswerToTheQuestion