Как переписать удалить номер пользовательской функции Excel VBA функцию в Google Sheets Google Script (Javascript) - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно переписать сценарий VBA в Javascript, но я застрял в части Java

Основное значение - удалить цифры из текста, такого как "texthere 123456789"

Мой код VBAis:

Function RemoveNum(Txt As String) As String
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "[0-9]"
RemoveNum = .Replace(Txt, "")
End With
End Function

Моя попытка JavaScript была:

function RemoveNumbers(RemoveNumbers) {
  var RemoveNumbers;
  //var str = RemoveNumbers.toString();
  var str = RemoveNumbers;
  str.Value.replace(/[0-9]/g, '');
}

Или даже:

function rn(remvnum) {
var str = remvnum;
var n = str.toString();
var res = n.replace(/[0-9]/gmi, '');

}

Что мешает мне достичь результата, это функция .Replaceдолжен быть строковым содержимым, в противном случае будет возвращена ошибка неопределенного значения, также я не могу преобразовать toString, поскольку он возвращает ошибку неопределенного значения.

Этот пример ниже работает хорошо, так как имя функции написано в GoogleЯчейка листа как пользовательская функция, но я не достиг желаемого числа удаления:

function styleHyphenFormat(propertyName) {
  function upperToHyphenLower(match, offset, string) {
    return (offset ? '-' : '') + match.toLowerCase();
  }
  return propertyName.replace(/[A-Z]/g, upperToHyphenLower);
}

Кто-то знает, что я сделал не так?

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

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Вам просто нужно return заменить значение:

function rn(remvnum) {
 //var str = remvnum;
 //var n = str.toString();
 var res = remvnum.toString().replace(/[0-9]/gmi, '');
 return res; //Added
}

Google листы поддерживают регулярное выражение () в качестве встроенной функции в отличие от Excel.Итак, вам не нужны макросы.Даже если вам нужна глобальная замена, меню «Найти и заменить» хорошо работает с регулярным выражением.

=REGEXREPLACE(A2,"\d",)

или

=ARRAYFORMULA(REGEXREPLACE(A2:A5,"\d",))
  • \d равно d igit (== [0-9])
0 голосов
/ 04 октября 2018

Попробуйте removeNumbers = removeNumbers.replace(/[0-9]/g, ''); или установите новую переменную, например noNums = removeNumbers.replace(/[0-9]/g, '');

...