Вставка символа где-то в строку

148
17 ноября 2018, 23:20

Допустим есть строка с временем, например 1234, по какой-то причине она не разделена, привычным нам, двоеточием.
Мы знаем, что двоеточие будет по середине, после первых двух символов.
Можно ли как-то вставить туда двоеточие средствами JQ?

В голову приходит только такой вариант:

var str = '1234'; // Строка 
// Далее как бы делим строку пополам 
var strFirst = str.slice(0,-2); //Первые два символа 
var strLast = str.slice(-2); // Последние два символа 
// Ну а потом соединяем с двоеточием 
str = strFirst+':'+strLast; 
console.info(str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

Может есть не велосипед?

Answer 1

{ // Array.splice 
  let a = '1234'.split(''); 
  a.splice(2, 0, ':'); 
  console.log('splice', a.join('')); 
} 
 
{ // regexp 
  let a = '1234'.match(/\d{2}/g).join(':'); 
  console.log('regexp', a); 
} 
 
{ 
  // String.splice 
  if (!String.prototype.splice) { // polyfill 
    String.prototype.splice = function(index, del, ...chars) { 
      return this.slice(0, index) + chars.join('') + this.slice(index + Math.abs(del)); 
    }; 
  } 
  console.log('splice', '1234'.splice(2, 0, ':')); 
  console.log('splice', '315'.splice(-2, 0, ':')); 
}

Answer 2

Ещё вот так можно:

function addColon(string) { 
  if (string.length % 2 !== 0) 
      return false; 
   return string.substr(0, string.length/2) + ':' + string.substr(string.length/2); 
} 
 
console.log(addColon("123415")); 
console.log(addColon("1234"));

Answer 3

Хорошим вариантом будет использование библиотеки moment.js. + она позволит вам легко делать любые операции с временем и датой.(пригодится в любом проекте где есть монипуляции с датой и временем).

Вот Решение вашей задачи с использованием этой библиотеки:

const moment = require('moment');
const data = moment(1234, 'HHmm').format('HH:mm');
READ ALSO
Как зашифровать сообщение в aes256 на чистом JavaScript?

Как зашифровать сообщение в aes256 на чистом JavaScript?

Охота зашифровать сообщение в AES256Допустим есть ключ и есть сообщение

149
Не могу использовать &#171;let&#187; в visual studio 2012

Не могу использовать «let» в visual studio 2012

Ковыряю один проект на vs 2012Так вот хочу кое-что дописать, но js интерпретатор не понимает директиву let

160
Привязать инпут к ползунку slider-range

Привязать инпут к ползунку slider-range

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

127
Как загрузить фото в Selenium WebDriver

Как загрузить фото в Selenium WebDriver

Пытаюсь загрузить изображение на сайт с помощью:

128