Domanda

Ho bisogno di implementare l'auto-capitalizzazione all'interno di un controllo Telerik RadEditor su una pagina ASPX mentre un utente digita.

Questa può essere una soluzione specifica per IE (IE6 +).

Attualmente acquisisco ogni sequenza di tasti (giù / su) mentre l'utente digita per supportare una funzione separata chiamata " macro " che sono essenzialmente parole chiave brevi che si espandono in testo formattato. vale a dire la macro "così" potrebbe espandersi automaticamente premendo la barra spaziatrice su "stackoverflow".

Detto questo, ho accesso alle informazioni keyCode, inoltre sto usando i metodi TextRange per selezionare una parola ("così") e espanderla a "stackoverflow". Quindi, ho una certa parvenza di contesto.

Tuttavia, devo controllare questo contesto per sapere se devo capitalizzare automaticamente. Anche questo deve funzionare indipendentemente dal fatto che sia coinvolta una macro.

Dal momento che sto monitorando le sequenze di tasti per le macro, devo solo monitorare la punteggiatura (è più che solo punti che indicano una lettera maiuscola) e tappare automaticamente la lettera successiva digitata, o dovrei usare TextRange e analizzare il contesto?

È stato utile?

Soluzione

Non sono sicuro se questo è ciò che stai cercando di fare, ma qui è una funzione ( riferimento ) per convertire una determinata stringa in case del titolo:

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);
    });
}

Altri suggerimenti

Hai provato ad applicare la text-transform Stile CSS ai tuoi controlli?

A volte, non farlo è la risposta giusta a un problema di codifica.

NON lo farei davvero, a meno che tu non pensi di poter scrivere uno script per impostare correttamente il caso nella frase seguente, se prima dovessi convertirlo in minuscolo e passarlo nello script.

Jean-Luc "Il re" O'Brien MacHenry van d'Graaf IIV (PhD, OBE), ha lasciato il suo Macintosh con in Macdonald con i suoi amici MacIntosh e MacDonald. Gesù diede il suo Atari ST all'A & amp; T "Aids for AIDS". concerto a San Giorgio, con Van Halen nel furgone di Van Henry, eseguendo The Tempest.

Ti sei preparato per una caduta cercando di creare un parser di linguaggio naturale. Non puoi mai farlo così come lo farà l'utente. Nella migliore delle ipotesi, puoi fare un'approssimazione e dare all'utente la possibilità di modificare e forzare una correzione quando la sbagli. Ma spesso in questi casi, l'editing è più un lavoro che semplicemente eseguirlo manualmente e in primo luogo.

Detto questo, se hai lo spazio e il potere di immagazzinare e cercare un corpus di n-grammo di parole opportunamente capitalizzate, almeno saresti in grado di avere una pugnalata selvaggia nel caso più probabile desiderato.

Poni una domanda interessante. Agire su ogni pressione del tasto può essere più limitante perché non si saprà cosa viene subito dopo un determinato codice (la complessità di annullare una reazione che risulta errata potrebbe significare comunque dover passare a una routine basata su TextRange). Certo, finora non ho lottato con il codice su questo problema, quindi questa è un'ipotesi nella mia testa.

In ogni caso, ecco una funzione di Title Case (implementazione java ispirata a un'automazione del blog di John Gruber) che può stimolare idee quando si tratta di gestire il codice del case reale:

  

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top