在 JavaScript 中查找字符串中的所有大写字符
Find all Uppercase characters in a String using JavaScript
要查找字符串中的所有大写字符,请对replace()
字符串调用该方法,并向其传递一个正则表达式。
该replace
方法将返回一个仅包含原始字符串大写字符的新字符串。
索引.js
const str = 'BobbyHadz'; const onlyUpper1 = str.replace(/[a-z]/g, ''); console.log(onlyUpper1); // 👉️ "BH" const onlyUpper2 = str.replace(/[^A-Z]/g, ''); console.log(onlyUpper2); // 👉️ "BH" const onlyUpper3 = str.match(/[A-Z]/g); console.log(onlyUpper3); // 👉️ [ 'B', 'H' ]
String.replace
()
方法返回一个新字符串,其中一个、一些或所有正则表达式的匹配项被替换为提供的替换项。
该方法采用以下参数:
姓名 | 描述 |
---|---|
图案 | 要在字符串中查找的模式。可以是字符串或正则表达式。 |
替代品 | 用于用提供的模式替换子字符串匹配的字符串。 |
正斜杠标记/ /
正则表达式的开始和结束。
方括号[]
称为字符类。
在字符类中,我们匹配范围内的任何字母a-z
,换句话说,所有小写拉丁字母。
索引.js
const str = 'BobbyHadz'; const onlyUpper1 = str.replace(/[a-z]/g, ''); console.log(onlyUpper1); // 👉️ "BH"
我们提供了一个空字符串作为每个匹配项的替换,所以本质上,我们用一个空字符串替换每个小写字母。
我们使用g
(global) 标志是因为我们想删除字符串中所有出现的小写字符,而不仅仅是第一次出现的字符。
从字符串中删除所有非大写字母
第二个例子中的正则表达式有点不同。
const str = '___Bobby!!Hadz???'; const onlyUpper2 = str.replace(/[^A-Z]/g, ''); console.log(onlyUpper2); // 👉️ "BH"
在此示例中,我们以插入符开始字符类^
。插入符号的意思是 – “不是以下”。
换句话说,将所有非大写拉丁字母替换为空字符串。
这与第一个例子不同,后者只替换了小写字母。
第二个示例删除所有非大写字母的字符。
获取包含字符串中大写字母的数组
第三个示例返回一个包含匹配项的数组。
索引.js
const str = '___Bobby!!Hadz???'; const onlyUpper3 = str.match(/[A-Z]/g); console.log(onlyUpper3); // 👉️ ['B', 'H']
String.match方法将字符串与正则表达式进行匹配。
该方法返回一个包含匹配项(如果有)或未null
找到匹配项的数组。
我们的正则表达式匹配任何大写字母并将每个匹配项添加到结果数组中。
# 将数组连接成字符串
如果需要将join
数组元素变回字符串,可以使用
Array.join()方法。
索引.js
const str = '___Bobby!!Hadz???'; const arr = str.match(/[A-Z]/g); console.log(arr?.join('')); // 👉️ BH console.log(arr?.join('-')); // 👉️ B-H
该方法采用的唯一参数Array.join()
是separator
– 用于分隔数组元素的字符串。
如果separator
参数设置为空字符串,则数组元素之间没有任何字符连接。
在该示例中,我使用了
可选的链接 (?.)运算符,因为该方法在未找到任何匹配项时match
返回。null
通过使用可选的链接 (?.) 运算符,我们可以短路而不是在尝试对值调用join()
方法时收到错误null
。
# 额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: