Как я могу заменить строку между цифрами? - PullRequest
0 голосов
/ 03 апреля 2019

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

const value = "12345XXXX98765XXXX"

Я хочу удалить «XXXX» и добавить «, вместо» XXXX. Как я могу это сделать?

Мое ожидаемое значение: "12345,98765". И тогда я хочу массив с элементами значения. Мой массив должен быть таким:

var array = []; array[0] = "12345", array[1] = "98765"

Как я могу это сделать?

Я пытаюсь этот код: value.replace("XXXX", ","), но он снова показывает XXXX.

Ответы [ 10 ]

1 голос
/ 03 апреля 2019

Для скрытых предложений, полный код здесь:

var value = "12345XXXX98765XXXX"
for(var i = 0; i < value.length; i++) {
  if(value[i] === 'X') {
    value = value.replace('XXXX', ',')
  }
}
value = value.substring(0, value.length - 1)
var parts = value.split(',')
console.info(parts)

Если вы хотите узнать больше о каждой части, вы можете прочитать ниже:

Я хочу удалить «XXXX» и добавить «,вместо «хххх».Как я могу это сделать?

Прежде всего, вам нужно использовать что-то под названием replace () , но как вы хотите удалить все вхождения 'XXXX', вы можете выполнить цикл for для поиска любого' X ', который можете найти.

ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

var value = "12345XXXX98765XXXX"
for(var i = 0; i < value.length; i++) { //looking through the whole string
    if(value[i] === 'X') { //For any X found
        value = value.replace('XXXX', ',') //you should replace them for a comma
    }
}

Как вы могли заметить,последний 'XXXX' также стал запятой, поэтому для его удаления просто используйте substring () .

ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring

value = value.substring(0, value.length - 1)

ИтакТеперь у вас есть строка, как вы хотели. "12345,98765"

Для разделения и получения значений до и после запятой можно использовать split () и сохранить результат в новомпеременная, которая является массивом.

ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split

var parts = value.split(',')
1 голос
/ 03 апреля 2019

Попробуйте это:

const value = "12345XXXX98765XXXX"

const result = value
  .replace(/[^\d]+/g, ',') // replace any consequent non-digit symbols with single comma
  .replace(/,$/, '') // trim off the last comma if any
  
console.info("String: " + result)

// or if you are looking to obtain the array directly, you can do:

const arr = value
  .split(/[^\d]+/) // split on consequent non-digit symbols
  .filter(Boolean) // filter out empty items
  
console.info("Array: ", arr)

Обратите внимание, что приведенные выше фрагменты будут работать независимо от того, есть ли у вас X в качестве заполнителя или любой другой буквы, и их число (4 или более или менее) также не имеет значения.

0 голосов
/ 03 апреля 2019

Поскольку вам нужен массив, очевидным способом будет использование split вместо replace

const value = "12345XXXX98765XXXX"
console.log(value.split('XXXX', 2))
0 голосов
/ 03 апреля 2019

var value = "12345XXXX98765XXXX";

value = value.split("XXXX");

console.log(value);
0 голосов
/ 03 апреля 2019

.replace () возвращает новую строку (она не изменяет существующую строку). Вам необходимо сделать следующее:

value = value.replace ("XXXX", ",")

0 голосов
/ 03 апреля 2019

Вы можете использовать replace() с регулярным выражением для соответствующих токенов (XXXX):

const value = "12345XXXX98765XXX";
var res = value.replace(/[X]+/g, ',').replace(/,$/, '').split(',');
console.log(res);
0 голосов
/ 03 апреля 2019

Вам необходимо переназначить возвращаемое значение для замены

value = value.replace("XXXX",",");

Также, поскольку вы объявили его как const, вы не сможете переназначить, поэтому используйте let вместо

0 голосов
/ 03 апреля 2019

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

var value = "12345XXXX98765XXXX"
value = value.replace(/XXXX/mg, ",").replace(/,$/, "");
parts = value.split(",");
console.log(parts);

Обратите внимание, что вторая замена регулярного выражения условно удаляет заключительную конечную запятую, если строка заканчивается на XXXX (что в вашем примере так и есть).Если запятая отсутствует, вторая замена просто не работает.

0 голосов
/ 03 апреля 2019

Вы пытались сохранить возврат replace()?

array = value.replace("XXXX",",");

0 голосов
/ 03 апреля 2019

Если вы используете replace, оно меняется только один раз, когда вам нужно использовать регулярное выражение

value.replace(/XXX/g, ",")

Позже вы можете использовать split для преобразования этой строки в массивhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...