У меня есть такая переменная:
GA1.2.721553813.2630350365
Я хотел бы удалить GA1.2.
из этой строки. Я использую метод split
, чтобы разделить это на .
, проблема в том, что переменная не всегда будет иметь 3-й .
, поэтому я хочу, чтобы мой JavaScript просто возвращал все, что идет после 2-го .
, как бы я это сделал?
var string = "GA1.2.721553813.2630350365";
// This returns 721553813, I want it to return everything after the second .
var split = string.split('.')[2];
console.info(split);
@ j08691 правильно, цифры не всегда будут именно такими, но я всегда хочу получить все, что идет после 2-го числа .
. Таким образом, префикс может быть, например, GA1.1.
.
Возможно, это: string.split('.').slice(2).join(".")
может улучшить ваш текущий код.
Можно заменить первую часть.
var string = "GA1.2.721553813.2630350365",
result = string.replace(/^([^.]+\.){2}/, '');
console.info(result);
Вы также можете использовать .slice
var string = "GA1.2.721553813.2630350365";
var split = string.split('.').slice(2).join('.');
console.info(split);
Вы можете взять все результаты разделения после второго и соединить их обратно в строку.
var string = "GA1.2.721553813.2630350365";
var split = string.split('.').slice(2).join('.');
console.info(split);
Однако здесь более простым вариантом будет регулярное выражение:
var string = "GA1.2.721553813.2630350365";
var split = string.replace(/^([^.]*[.]){2}/, '');
console.info(split);
Эта строка будет делать то, что вы хотите сделать
console.info(string.split('.').slice(2).join('.'));
Вы можете использовать Строка.прототип.матч() с регулярным выражением.
var string = "GA1.2.721553813.2630350365";
// Always assume GA1.2.
var matchesA = string.match(/GA1\.2\.(.+)/);
console.info(matchesA);
console.info(matchesA[1]);
// more generic:
// G(digit).(digit).
var matchesA = string.match(/GA\d\.\d\.(.+)/);
console.info(matchesB);
console.info(matchesB[1]);
Если вы знаете, это всегда будет "GA1.2". (я имею в виду, что длина равна 6), тогда вы можете сделать подстроку для переменной .substr(6).
Если это всегда "GA1.2." вы можете заменить («GA1.2.», «»)
Другой вариант — найти index
, связанный со вторым (2-м) dot
, используя Строка.indexOf(), а затем Строка.срез() строку из этого индекса.
let tests = [
"GA1.2.721553813.2630350365",
"LM15.299.721553813313612783",
"GA33.1.721553813.26.3224",
];
const getCustomSubstr = (str) =>
{
let idxOf2ndDot = str.indexOf(".", str.indexOf(".") + 1);
return str.slice(idxOf2ndDot + 1);
};
tests.forEach(t => console.info(t + " => " + getCustomSubstr(t)));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
Похоже, регулярное выражение будет вашим лучшим выбором. Можем ли мы предположить, что не каждая строка начинается с
GA1.2
?