Автообрезка Очистить правильное (название) регистр и удалить лишние пробелы между словами в таблице Google - PullRequest
1 голос
/ 12 октября 2019

В продолжении вопроса, заданного ЗДЕСЬ и отличного ответа @Edvin, у меня следующий запрос.

Следующий код прекрасно работает в моей электронной таблице Google.

function onEdit(e) {
  if (typeof e.value != 'object') {
    if ([4, 5].indexOf(e.range.columnStart)<0) return;
    e.range.setValue(titleCase(e.value));
  }
}

function titleCase(str) {
  return str.toString().split(/\b/).map(function(word) {
    return word ? word.charAt(0).toUpperCase() + word.slice(1).toLowerCase() : '';
  }).join('');
}

Есть ли способ добавить TRIM, CLEAN, удалить лишние пробелы между словами, как функции в этом коде.

1 Ответ

0 голосов
/ 13 октября 2019

Как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких ответов.

В этом ответе я использовал скрипт из этой темы для достижения TRIM и CLEAN. И с помощью этой функции ваш скрипт был изменен.

Модифицированный скрипт:

function onEdit(e) {
  if (typeof e.value != 'object') {
    if ([4, 5].indexOf(e.range.columnStart)<0) return;
    e.range.setValue(titleCase(e.value));
  }
}

// Modified
function titleCase(str) {
  return str.toString().split(/\b/).map(function(word) {
    return word ? cleanForGAS(word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) : '';
  }).filter(String).join(' ');
}

// This function is from https://stackoverflow.com/a/50053581
function cleanForGAS(str) {
  if (typeof str == "string") {
    var escaped = escape(str.trim());
    for (var i = 0; i <= 31; i++) {
      var s = i.toString(16);
      var re = new RegExp("%" + (s.length == 1 ? "0" + s : s).toUpperCase(), "g");
      escaped = escaped.replace(re, "");
    }
    var remove = ["%7F", "%81", "%8D", "%8F", "%90", "%9D"];
    remove.forEach(function(e) {
      var re = new RegExp(e, "g");
      escaped = escaped.replace(re, "");
    });
    return unescape(escaped).trim();
  } else {
    return str;
  }
}

Если я неправильно понял ваш вопрос, и это был не тот результат, который вы хотите, я приношу свои извинения.

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