Метод разделения JavaScript удаляет первые 2 раздела

У меня есть такая переменная:

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

Похоже, регулярное выражение будет вашим лучшим выбором. Можем ли мы предположить, что не каждая строка начинается с GA1.2?

j08691 12.06.2019 18:23

@ j08691 правильно, цифры не всегда будут именно такими, но я всегда хочу получить все, что идет после 2-го числа .. Таким образом, префикс может быть, например, GA1.1..

user13286 12.06.2019 18:24

Возможно, это: string.split('.').slice(2).join(".") может улучшить ваш текущий код.

Shidersz 12.06.2019 18:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
1 989
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

Можно заменить первую часть.

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

Другие вопросы по теме