Pergunta

Eu preciso implementar auto-capitalização dentro de um controle Telerik RadEditor em uma página ASPX como um usuário digita.

Esta pode ser uma solução específica IE (IE6 +).

Eu atualmente capturar todas as teclas (para cima / baixo) como o usuário digita para apoiar um recurso separado chamado "macros" que são essencialmente palavras-chave curtas que se expandem em texto formatado. ou seja, a macro "so" poderia auto expandir em cima de bater a barra de espaço para "stackoverflow".

Dito isso, eu tenho acesso à informação keyCode, assim que eu estou usando os métodos TextRange para selecionar uma palavra ( "so") e expandindo-o para "stackoverflow". Assim, eu tenho algumas semblence de contexto.

No entanto, eu preciso verificar neste contexto para saber se eu deveria auto-capitalizar. Isso também precisa de trabalho, independentemente de um macro está envolvido.

Desde que eu estou monitorando as teclas digitadas para as macros, eu deveria apenas monitorar a pontuação (é mais do que períodos apenas que sinalizam uma letra maiúscula) e auto-cap a próxima letra digitada, ou devo usar TextRange e analisar contexto?

Foi útil?

Solução

Eu não tenho certeza se é isso que você está tentando fazer, mas aqui é uma função ( referência ) para converter uma determinada seqüência de caso de título:

function toTitleCase(str) {
    return str.replace(/([\w&`'‘’"“.@:\/\{\(\[<>_]+-? *)/g, function(match, p1, index, title){ // ' fix syntax highlighting
        if (index > 0 && title.charAt(index - 2) != ":" && 
            match.search(/^(a(nd?|s|t)?|b(ut|y)|en|for|i[fn]|o[fnr]|t(he|o)|vs?\.?|via)[ -]/i) > -1)
            return match.toLowerCase();
        if (title.substring(index - 1, index + 1).search(/['"_{([]/) > -1)
            return match.charAt(0) + match.charAt(1).toUpperCase() + match.substr(2);
        if (match.substr(1).search(/[A-Z]+|&|[\w]+[._][\w]+/) > -1 ||
            title.substring(index - 1, index + 1).search(/[\])}]/) > -1)
            return match;
        return match.charAt(0).toUpperCase() + match.substr(1);
    });
}

Outras dicas

Você tentou aplicar o text-transform estilo CSS para seus controles?

Às vezes, não fazê-lo é a resposta certa para um problema de codificação.

Eu realmente não iria fazer isso, a menos que você sente que você pode escrever um script para definir corretamente o caso na seguinte frase, se você fosse primeiro convertê-lo para minúsculas e passá-lo para o script.

Jean-Luc "The King" O'Brien MacHenry van d'Graaf IIV (PhD, OBE), deixou seu Macintosh com no Macdonald com seus amigos MacIntosh e MacDonald. Jesus deu a Sua Atari ST no show AT & T do "Aids para a AIDS" em r de St George, com Van Halen na van de van Henry, realizando a tempestade.

Você configurar-se para uma queda tentando criar um analisador de linguagem natural. Você nunca pode fazer isso, bem como o usuário vai. Na melhor das hipóteses, você pode fazer uma aproximação, e dar ao usuário a capacidade de editar e forçar uma correção quando você errar. Mas, muitas vezes, em tais casos, a edição é mais trabalho do que apenas fazê-lo manualmente e direita em primeiro lugar.

Dito isto, se você tem o espaço e poder para armazenar e pesquisar um grande corpus n-grama de palavras adequadamente capitalizadas, você teria, pelo menos, ser capaz de ter uma facada selvagem no caso mais provável desejado.

Você colocar uma pergunta interessante. Agindo sobre cada tecla pressionada pode ser mais limitante, pois você não vai saber o que vem imediatamente após um determinado código de acesso (a complexidade de desfazer uma reação que acaba por ser incorreta poderia significar ter que ir a uma qualquer forma de rotina à base de TextRange). Concedido, eu não lutou com código sobre este problema até à data, por isso esta é uma hipótese na minha cabeça.

A qualquer comprimento, aqui está uma função Título Carcaça (aplicação java inspirado por uma automação John Gruber blogs) que podem estimular idéias quando se trata de lidar com o código de caixa real:

http://individed.com/code/to-title-case/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top