Domanda Controlla se la prima lettera di parola è una lettera maiuscola


È possibile in Javascript scoprire se la prima lettera di una parola è una lettera maiuscola?


38
2017-11-30 23:36


origine


risposte:


var word = "Someword";
console.log( word[0] === word[0].toUpperCase() );

o

var word = "Someword";
console.log( /[A-Z]/.test( word[0]) );

o

var word = "Someword";
console.log( /^[A-Z]/.test( word) );

Vedere toUpperCase() e test()


79
2017-11-30 23:40



Le altre risposte in questa pagina vanno bene per le stringhe note solo con lettere A-Z non accentate. Se non è possibile garantire questo (ad esempio, input dell'utente), possono dare risultati inattesi: falsi positivi per le iniziali incapitalisabili come "1940" o "中文", o falsi negativi per iniziali di capitale accentate o non romane come "Łukasz" o " Александра".

Questa variante restituisce true se l'iniziale è qualunque lettera maiuscola, e solo se è una lettera maiuscola:

function initialIsCapital( word ){
  return word[0] !== word[0].toLowerCase();
}

Uso .charAt(0) invece di [0]  se hai bisogno del supporto IE8. Quale è più veloce varia tra i browser.

Questo evita due potenziali insidie ​​con le altre risposte:

  • Regex usando [A-Z] non riuscirà a far corrispondere le lettere maiuscole accentate non simili A-Z come in Una terra (Isole scandinave) e Łukasz (nome polacco comune), comprese lettere maiuscole in script non latini come il cirillico o il greco (ad es. Александра).

  • L'approccio usando word[0] === word[0].toUpperCase(), restituirà true su parole che iniziano con non lettere, come ad esempio 1940, 17 °, 123reg (nome dell'azienda), abbreviazioni come 2mrw, o alcune parole in alcune lingue africane, come ad esempio ! xūún o ǂǐ-sì. Tratterà anche qualsiasi input da un alfabeto che non ha maiuscole come lettere maiuscole (ad es. 中文).

Poiché questo approccio arbitrario di input-safe è altrettanto semplice e non meno leggibile rispetto alle alternative, è probabilmente meglio usarlo anche se non si prevedono tali eccezioni.

Ecco un test rapido:

function a(word){
  return word[0] !== word[0].toLowerCase();
}
function b(word){
  return word[0] === word[0].toUpperCase();
}
function c(word){
  return /^[A-Z]/.test( word );
}
function test(word, answer){
  console.log( 'Should be '+answer+':',  a(word), b(word), c(word), '-------', word );
}

test( 'Łukasz', true ); // regex test fails, returns false
test( 'Александра', true ); // regex test fails, returns false
test( '1940s', false ); // .toUpperCase() test fails, returns true
test( '中文', false ); // .toUpperCase() test fails, returns true

test( 'ß', false ); // All pass on German "sharp S" that has no uppercase
test( 'Z̢̜̘͇̹̭a͎͚͔͕̩̬̭͈͞l̩̱̼̤̣g̲̪̱̼̘̜͟ợ̮̱͎̗̕ͅͅ', true ); // All pass. Phew, Zalgo not awakened 


16
2017-09-02 12:17



Sì.

var str = "Hello";
if(str[0].toUpperCase() == str[0])
{
   window.alert('First character is upper case.');  
}

8
2017-11-30 23:40



Puoi farlo in diversi modi:

var myWord = "Hello";

// with string functions
if (myWord.charAt(0) === myWord.charAt(0).toUpperCase()) { /* is upper */ }

// or for newer browsers that support array-style access to string characters
if (myWord[0] === myWord[0].toUpperCase()) { /* is upper */ }

// with regex - may not be appropriate for non-English uppercase
if (/^[A-Z]/.test(myWord) { /* is upper */ }

Si noti che l'accesso in stile array a caratteri come myWord[0] è una funzione di ECMAScript 5 e non è supportata nei browser più vecchi, quindi (per ora) probabilmente raccomanderei il .charAt () metodo.

Se hai bisogno di fare molto questo test potresti fare una piccola funzione:

function firstLetterIsUpper(str) {
   var f = str.charAt(0);   // or str[0] if not supporting older browsers
   return f.toUpperCase() === f;
}

if (firstLetterIsUpper(myWord)) { /* do something */ }

3
2017-12-01 00:43



Per Inglese solo lettere:

'A' => 65
'Z' => 90

Significato, ogni numero compreso tra [65, 90] è una lettera maiuscola:

function startsWithCapitalLetter(word) {
  return word.charCodeAt(0) >= 65 && word.charCodeAt(0) <= 90;
}

3
2017-10-04 13:57



var string1 = "this is a string";
var string2 = "This is a string";

if(string1[0] == string1[0].toUpperCase())
    alert('is upper case');
else
    alert('is not upper case');


if(string2[0] == string2[0].toUpperCase())
    alert('is upper case');
else
    alert('is not upper case');

0
2017-11-30 23:43



let word = 'Someword';
console.log(word.match(new RegExp(/^[A-Z]/)) !== null);

-1
2017-07-25 15:32