在Javascript中是否可以找出单词的第一个字母是否是大写字母?
答案 0 :(得分:87)
var word = "Someword";
console.log( word[0] === word[0].toUpperCase() );
或
var word = "Someword";
console.log( /[A-Z]/.test( word[0]) );
或
var word = "Someword";
console.log( /^[A-Z]/.test( word) );
答案 1 :(得分:19)
此页面上的其他答案适用于已知仅包含非重音A-Z字母的字符串。如果你不能保证这一点(例如用户输入),它们可能会产生意想不到的结果:对于诸如“1940年代”或“中文”之类的不可开头的首字母的误报,或对于诸如“Łukasz”或“Łukasz”或“非罗马首都缩写”的假阴性Александра”。
如果首字母是任何大写字母,则此变体返回true,如果是大写字母,则仅 :
function initialIsCapital( word ){
return word[0] !== word[0].toLowerCase();
}
使用.charAt(0)
代替[0]
if you need IE8 support。哪个is faster varies between browsers。
这避免了其他答案的两个潜在缺陷:
使用[A-Z]
的正则表达式无法匹配重音和其他类似的非AZ大写字母,例如Åland(斯堪的纳维亚群岛)和Łukasz (常见的波兰语名称),包括非拉丁文字母中的大写字母,如西里尔文或希腊文(例如Александра)。
使用word[0] === word[0].toUpperCase()
的方法会在以非字母开头的字词上返回true,例如 1940s , 17th , 123reg (公司名称),缩写 2mrw ,或某些非洲语言中的某些词语,例如!xūún或ǂǐ-sì。它还会将字母表中没有大写字母的任何输入视为大写字母(例如中文)。
由于这种任意输入安全的方法与替代方法一样简单且可读性不高,即使您没有预料到这种异常,也可能更好地使用它。
这是一个快速测试:
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
答案 2 :(得分:8)
是
var str = "Hello";
if(str[0].toUpperCase() == str[0])
{
window.alert('First character is upper case.');
}
答案 3 :(得分:4)
仅限英文字母:
'A' => 65
'Z' => 90
意思是,[65,90]之间的每个数字都是大写字母:
function startsWithCapitalLetter(word) {
return word.charCodeAt(0) >= 65 && word.charCodeAt(0) <= 90;
}
答案 4 :(得分:3)
您可以通过多种方式实现:
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 */ }
请注意,对myWord[0]
等字符的数组样式访问是ECMAScript 5功能,旧浏览器不支持,因此(暂时)我可能会推荐使用.charAt()方法。
如果你需要做很多测试,你可以做一点功能:
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 */ }
答案 5 :(得分:0)
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');
答案 6 :(得分:0)
使用字符串对象原型的match
方法:
const word = 'Someword';
console.log(word.match(new RegExp(/^[A-Z]/)) !== null);
答案 7 :(得分:0)
打字稿
//userEntry input as string
//return boolean
oneUppercaseRequired(userEntry: string): boolean {
const letters = /[A-Z]/;
if (letters.test(userEntry[0]))
return true;
return false;
}
用于其他语言的循环,将语法更改为您的语言!
//userEntry param as string
//return boolean
oneUppercaseRequired(userEntry: string): boolean {
const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (let i = 0; i < letters.length; i++) {
if (userEntry[0] == letters[i])
return true;
}
return false;
}