检查单词的第一个字母是否为大写字母
JavaScript 是否可以判断一个单词的第一个字母是否为大写字母?
Is it possible in JavaScript to find out if the first letter of a word is a capital letter?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
更新
用我认为当今最有效的方法进行更新。
您可以使用 Unicode 属性转义正则表达式如果支持适合您。在这种情况下,您可以使用大写字母
Lu
常规类别属性 >。旧答案
或
或
请参阅
toUpperCase()
和测试()
update
Updating with what i think is the most valid approach nowadays.
You can use a Unicode property escapes Regular expression if the support suits you. In this case you can use the General category property for Uppercase Letter
Lu
.older answers
or
or
See
toUpperCase()
andtest()
本页上的其他答案适用于已知仅包含非重音 AZ 字母的字符串。如果您不能保证这一点(例如用户输入),它们可能会给出意想不到的结果:对于不可大写的首字母(例如“1940s”或“中文”)的误报,或者对于重音或非罗马大写首字母(例如“Łukasz”或“)的误报” Александра”。
如果首字母是任何大写字母,则此变体返回 true;仅如果它是大写字母:
使用
.charAt(0)
而不是 < code>[0] 如果您需要 IE8 支持。哪个更快因浏览器而异。这避免了其他答案的两个潜在陷阱:
使用
[AZ]
的正则表达式将无法匹配重音字母和其他类似的非AZ大写字母,例如Åland(斯堪的纳维亚群岛)和Łukasz(常见波兰语名称),包括非拉丁字母的大写字母,例如西里尔语或希腊语(例如Александра)。使用
word[0] === word[0].toUpperCase()
的方法将对以非字母开头的单词返回 true,例如 1940s、17th、123reg(公司名称)、缩写如 2mrw 或某些非洲语言中的单词,例如!xūún 或 ǂǐ-sì。它还会将任何来自字母表中不包含大写字母的输入视为大写字母(例如中文)。由于这种任意输入安全的方法与其他方法一样简单且可读性不亚于其他方法,因此即使您没有预料到此类异常,也可能更好地使用它。
这是一个快速测试:
The other answers on this page are fine for strings that are known to only contain non-accented A-Z letters. If you can't guarantee this (e.g. user input), they may give unexpected results: false positives for uncapitalisable initials like "1940s" or "中文", or false negatives for accented or non-Roman capital initials like "Łukasz" or "Александра".
This variant returns true if the initial is any capital letter, and only if it's a capital letter:
Use
.charAt(0)
instead of[0]
if you need IE8 support. Which is faster varies between browsers.This avoids two potential pitfalls with the other answers:
Regexes using
[A-Z]
will fail to match accented and other similar non-A-Z capitalised letters such as in Åland (Scandinavian islands) and Łukasz (common Polish name), including capital letters in non-latin scripts such as Cyrillic or Greek (e.g. Александра).The approach using
word[0] === word[0].toUpperCase()
, will return true on words that start with non-letters, such as 1940s, 17th, 123reg (company name), abbreviations like 2mrw, or some words in some African languages, such as !xūún or ǂǐ-sì. It'll also treat any input from an alphabet that doesn't have capital letters as being capital letters (e.g. 中文).Since this arbitrary-input-safe approach is just as simple and no less readable than the alternatives, it's probably better to use this even if you don't anticipate such exceptions.
Here's a quick test:
仅适用于英文字母:
意思是,[65, 90]之间的每个数字都是大写字母:
For English letters only:
Meaning, every number between [65, 90] is a capital letter:
是的。
Yes.
您可以通过多种方式完成此操作:
请注意,对
myWord[0]
等字符的数组样式访问是 ECMAScript 5 功能,较旧的浏览器不支持,因此(目前)我可能会推荐使用 .charAt() 方法。如果您需要经常进行此测试,您可以制作一个小功能:
You can do it in several ways:
Note that the array-style access to characters like
myWord[0]
is an ECMAScript 5 feature and not supported in older browsers, so (for now) I'd probably recommend the .charAt() method.If you need to do this test a lot you could make a little function:
使用字符串对象原型的
match
方法:Using the
match
method of the string object prototype:Typescript
其他语言的 for 循环 将语法更改为您的语言!
Typescript
for-loop for other languages Change the syntax to your language!