Как вставить символ после каждого набора цифр в JavaScript?

0

На основе простого кода jQuery/JavasScript ниже, когда щелкнули ссылку, он получает имя class ссылок и удаляет sign слова, так что sign24x10 становится 24x10

То, что я хотел бы сделать, также вставить " после 24 и после 10, а также пробел. Таким образом, 24x10 становится 24" x 10 ". Имейте в виду, что их будет много, поэтому числовое значение всегда будет другой.

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

<a href="sign24x10" class="sign24x10">
    <small style="height: 50px; width: 120px;"></small>Size 24" x 10"
</a>

$("#sign-size-boxes a").on("click", function(e){
    signSizeStr = $(this).attr('class').replace("sign", "");
});
Теги:

5 ответов

2
Лучший ответ

Вы можете использовать простое выражение 'regex.

$("#sign-size-boxes a").on("click", function(e){
    matches = $(this).attr('class').match(/sign([0-9]+)x([0-9]+)/);
    signSizeStr = matches[1] + '" x ' + matches[2] + '"';
});
  • 0
    Я вижу несколько хороших решений здесь, и я не уверен, что является «Лучшим», но я решил пока согласиться с этим, благодаря вам и другим
  • 0
    @jasondavis Я бы сказал, что мой лучше, потому что он избегает ненужного промежуточного шага. Нет смысла сопоставлять, а затем строить строку вручную, если replace может сделать это за один шаг. Тем не менее, это не очень большая разница, и этот ответ абсолютно приемлем, чтобы его приняли. Рад, что вы посмотрели и на других!
1

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

signSizeStr = $(this).attr('class')
    .replace("sign", "")
    .replace(/(\d+)x(\d+)/g, '$1" x $2"');

Или одним звонком

signSizeStr = $(this).attr('class')
    .replace(/sign(\d+)x(\d+)/g, '$1" x $2"');
1

Я думаю, вы можете просто расколоться на x. Тогда concat, что-то вроде ниже

var a = '24x10';
var x = a.split('x');
x[0]+'" x '+x[1]+'"' // this should give you 24" x 10"

Примечание: его демо-код, пожалуйста, измените его

0

Вы можете просто вызвать замену еще раз.

signSizeStr = $(this).attr('class').replace("sign", "").replace("x",'" x ') + '"';
0

Добавьте в свой код следующий код:

arrTmp = signSizeStr.split("x")

newStr = arrTmp [0] + '"x' + arrTmp [1] + '"'

  • 0
    Первая строка кода разделит строку signSizeStr на массив, используя «x» в качестве разделителя. Следующая строка кода в основном объединяет 2 элемента массива с требуемыми символами, такими как ", x и соответствующие пробелы
  • 0
    Вам не хватает конечных точек с запятой, что считается плохой практикой. Вы объявляете неявные глобалы, что является плохой практикой и опасным. И вы утверждаете, что это вставной фрагмент, которого просто нет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню