Убрать пробелы из чисел - оставь без изменений - PullRequest
0 голосов
/ 24 июня 2019

Полное раскрытие: я не программист (что, вероятно, станет очевидным через секунду). Я часто копирую числа с одного листа на другой, а числа больше 999 имеют пробел между первым и вторым числом. Я попытался создать скрипт (с помощью похожих скриптов, которые я нашел здесь), который удаляет эти пробелы одним нажатием кнопки, но это только отчасти работает.

Вот образец листа с моим кодом: https://docs.google.com/spreadsheets/d/11_CWZfhBupUpBKYi7I9cwGBakSr4LikOm0bGft6YA7Q/edit?usp=sharing

Я старался изо всех сил модифицировать выражение Regex, чтобы делать то, что я хочу, но я думаю, что мои знания слишком слабые.

....
function Remove_space() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Input");

  var r = sheet.getRange("E4:E50");
  var v = r.getValues();

  for(var k=0;k<v.length;k++)
    for(var j=0;j<v[0].length;j++)
      v[k][j]=v[k][j].toString().replace(/\s/g, "");
  r.setValues(v);
};
....

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

Он удаляет пробелы, но по какой-то причине он также конвертирует мои запятые (десятичный разделитель) в точки. Если десятичных дробей нет, это не проблема.

1 Ответ

1 голос
/ 24 июня 2019

Проблема:

  • Преобразование строки: Javascript не поддерживает , в качестве десятичного разделителя.Таким образом, когда вы получаете getValue (), они автоматически конвертируются в ..Когда вы setValue(), он будет преобразован обратно в ,.Но во время выполнения функции вы используете .toString(), что делает период . постоянным.

Решение:

  • Получить как тип строки: Используйте getDisplayValues(), если хотите получить числа в виде строк с , в качестве десятичного разделителя без изменений.ИЛИ

  • Установить как Тип числа: Преобразовать замененную строку регулярного выражения обратно в число.Вам также следует вручную преобразовать запятую , в период ., чтобы привести ее к типу числа.

Фрагмент:

 r.getDisplayValues();

ИЛИ

v[k][j]=Number(v[k][j].toString().replace(/\s/g, "").replace(/\,/g,"."));

Ссылки:

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