2014-11-26 3 views
3

Как получить позиции всех символов верхнего строка в строке, в jquery?Как найти позицию всех символов в верхнем регистре в строке?

предположить var str = "thisIsAString";

ответ будет 4,6,7 (с т быть с индексом = 0)

+3

Все или для первого? проверьте заголовок – ppascualv

+1

Ответил здесь: http://stackoverflow.com/questions/6055152/finding-uppercase-characters-within-a-string –

+0

Я честно не знаю, может ли jquery на самом деле это сделать, но в javascript, определенно – Huangism

ответ

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

Поскольку вы сопоставляетесь с одиночными символами, я не думаю, что вам нужен флаг 'g' на вашем RegExp. Вероятно, вы можете сделать это быстрее (для больших строк), назначив регулярное выражение переменной, находящейся за пределами цикла. – ssube

+0

Исправлен жадный квантификатор. – Dropout

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>

Это будет цикл по строке, соответствие каждого символа верхнего регистра, и (в данном примере) добавление его в список. Вы также можете легко добавить его в массив или использовать его в качестве входа в функцию.

Это та же методика, которая приведена в MDN example для RegExp.exec, а в спичках приведены некоторые дополнительные данные. Вы также можете использовать более сложные регулярные выражения, и этот метод все равно должен работать.

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(); 
    } 
} 

Allright не на много псевдокода, но, возможно, некоторые синтаксические ошибки ..

1

Просто кулачок использовать match(). Пример:

var str = 'thisIsAString'; 
var matches = str.match(/[A-Z]/g); 
console.log(matches); 
Смежные вопросы