Google Script Apps - Используйте заглавные буквы в каждом слове входной строки в ячейке. - PullRequest
0 голосов
/ 22 марта 2019

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

    /*Capitalize Firt Letter of Each Word of input String in Cell*/
  if(activeRow > 1 && activeCol == 3 && ss.getSheetName() == validSheet && activeCell.isBlank() == false)
  { 
    var inputVal = activeCell.getValue().toString();
    Logger.log(inputVal);
    activeCell.setFormulaR1C1("=PROPER("+inputVal+")");
  }

Пример:

Вход для ячейки A2:

this tExt neEds to be fixed

Выход (желаемый результат) для ячейкиA2:

This Text Needs To Be Fixed

Заранее спасибо

Редактировать 1: Я заметил, что правильная функция не будет работать, потому что для нее требуется значение ячейки.

1 Ответ

1 голос
/ 22 марта 2019

Вот функция, которая берет строку и использует первую букву каждого слова:

function capitalizePhrase(phrase) {
  var reg = /\b(\w)/g;
  function replace(firstLetters) {
    return firstLetters.toUpperCase();
  }
  capitalized = phrase.replace(reg, replace);
  return capitalized;
}

, который вы можете затем использовать следующим образом:

var inputVal = activeCell.getValue().toString();
var outputVal = capitalizePhrase(inputVal);
activeCell.setValue(outputVal);

Изменить - если вы также хотите установить другие буквы в слове в нижний регистр, вы можете использовать эту функцию вместо:

function properCase(phrase) {
  var regFirstLetter = /\b(\w)/g;
  var regOtherLetters = /\B(\w)/g;
  function capitalize(firstLetters) {
    return firstLetters.toUpperCase();
  }
  function lowercase(otherLetters) {
    return otherLetters.toLowerCase();
  }
  var capitalized = phrase.replace(regFirstLetter, capitalize);
  var proper = capitalized.replace(regOtherLetters, lowercase);

  return proper;
}
...