如何在jquery中获取字符串中所有大写字符的位置?
假设
var str = "thisIsAString";
答案是4,6,7(t在索引= 0)
答案 0 :(得分:11)
迭代这些字母并将它们与正则表达式匹配。例如
var inputString = "What have YOU tried?";
var positions = [];
for(var i=0; i<inputString.length; i++){
if(inputString[i].match(/[A-Z]/) != null){
positions.push(i);
}
}
alert(positions);
答案 1 :(得分:1)
您可能希望使用正则表达式来匹配相应的字符(在本例中为[A-Z]
或类似字符)并循环匹配。有点像:
// Log results to the list
var list = document.getElementById("results");
function log(msg) {
var item = document.createElement("li");
item.innerHTML = msg;
list.appendChild(item);
}
// For an input, match all uppercase characters
var rex = /[A-Z]/g;
var str = "abCdeFghIjkLmnOpqRstUvwXyZ";
var match;
while ((match = rex.exec(str)) !== null) {
log("Found " + match[0] + " at " + match.index);
}
<ol id="results"></ol>
这将循环遍历字符串,匹配每个大写字符,并(在示例中)将其添加到列表中。您可以轻松地将其添加到数组中或将其用作函数的输入。
这与RegExp.exec
{{1}}中给出的技术相同,匹配提供了一些额外的数据。您还可以使用更复杂的正则表达式,这种技术仍然可以使用。
答案 2 :(得分:1)
只需使用match()
。例如:
var str = 'thisIsAString';
var matches = str.match(/[A-Z]/g);
console.log(matches);
答案 3 :(得分:0)
伪代码(没有太多时间)
var locations = [];
function getUpperLocs(var text = ''){
for(var i = 0;i == check.length();i++)
{
if(checkUpper(text){
locations.push(i)
}
}
function checkUppercase(var str = '') {
return str === str.toUpper();
}
}
没有太多伪代码,但可能有一些语法错误..
答案 4 :(得分:0)
使用javascript的简单解决方案:)
index = paragraph.match(/[A-Z]/g).map(function (cap) {
return paragraph.indexOf(cap);
});
希望这可以帮助遇到此问题的任何人
答案 5 :(得分:0)
这应该有效。
function spinalCase(str) {
let lowercase = str.trim()
let regEx = /\W+|(?=[A-Z])|_/g
let result = lowercase.split(regEx).join("-").toLowerCase()
return result;
}
spinalCase("thisIsAString");