2012-03-30 2 views

ответ

0
// Remove all non-digits from the string 
'box1'.replace(/\D/g, ''); // => '1' 
// Same, but try to make the string a number 
Number('box1'.replace(/\D/g, '')); // => 1 
// Shorthand for making an object a number (+o is the same as Number(o)) 
+'box1'.replace(/\D/g, ''); // => 1 
// parseInt(s) works if the number is at the beginning 
parseInt('1box'); // => 1 
// but not if it occurs later 
parseInt('box1'); // => NaN 
2

Просто замените строку коробки из него.

DEMO

for (var i = 0; i < order.length; i++) { 
    order[i] = order[i].replace('box', ''); 
} 
+1

+1 Ударьте меня! – msanford

+0

Из интереса есть ли преимущество использования этого метода regex? –

+1

@benedict_w Для меня это было бы удобочитаемо. Regex может выглядеть и сканировать как переработанное решение, которое действительно означает «заменить эту строку ничем». Если вы свободно говорите в Regex, он, вероятно, сканирует так же легко. Но я думаю, что многие из нас все еще обращаются к нашим ресурсам каждый раз, когда мы используем регулярное выражение. ;-) Мне нравится сохранять его в ситуации, когда простая замена не достаточно хороша. –

2

Таким образом, вместо box1, box2, box3, box4 вы хотите увидеть 1,2,3,4

Вы можете использовать регулярное выражение как this:

var order = $("#boxes").sortable("toArray") + ""; 
alert(order.replace(/[^0-9,]/g, '')); 

Я также должен был добавить пустую строку order, поскольку он не распознавался как строковый объект, хотя jQuer y документация говорит, что это должно быть, когда вы вызываете sortable("toArray").

0

Может быть, используя регулярные выражения что-то вроде этого:

`alert(order.join(',').match(/\d/g));` 

Чтобы вернуть массив в качестве чисел.

(\d матчи все цифры, g означает глобальный матч группового символа)

0

Один из способов сделать это с помощью регулярных выражений - http://jsfiddle.net/holodoc/82r5v/14/

$(document).ready(function() { 

    var arrValuesForOrder = ["2", "1", "3", "4"]; 
    var ul = $("#boxes"), 
     items = $("#boxes li.con"); 

    for (var i = arrValuesForOrder[arrValuesForOrder.length - 1]; i >= 0; i--) { 
     // arrValuesForOrder[i] element to move 
     // i = index to move element at 
     ul.prepend(items.get(arrValuesForOrder[i] - 1)); 
    } 

$("#boxes").sortable({ 
    handle : '.drag', 
    update: function() { 
     var order = $("#boxes").sortable("toArray"); 
     var sorted = []; 
     $.each(order, function(index, value){ 
      sorted.push(value.match(/box(\d+)/)[1]);     
     }) 
     alert(sorted); 
    } 
}); 

}); 
Смежные вопросы