Для удаления начальных и конечных пробелов в строке используется метод trim, но в скриптах JScript на Windows Script Host он не работает – этот код

var str = "  строка  ";
str = str.trim();
WScript.Echo ("str.trim(): '" + str + "'");

приводит к ошибке

Ошибка выполнения Microsoft JScript: Объект не поддерживает это свойство или метод

Причина ошибки в том, что метод trim() не поддерживается в WSH (Windows Script Host). Но эту функциональность можно реализовать удалением части строки, как в виде функции trim(), так и в виде метода String.trim().

Реализация функции trim()

Функция принимает строку как аргумент и возвращает строку без ненужных пробелов.

function trim(str) {
    return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
}

WScript.Echo("\"" + str +"\" -> trim:\"" + trim(str) + "\"");

Для строки » текст » (по одному пробелу в начале и в конце) получается:

" текст " -> trim:"текст"

Также можно написать функции для удаления только начальных или только конечных пробелов.

function ltrim(str) {
    return str.replace(/^[\s\uFEFF\xA0]+/g, '');
}

function rtrim(str) {
    return str.replace(/[\s\uFEFF\xA0]+$/g, '');
}

Реализация метода String.trim()

Удобнее иметь метод trim() для объекта String, это делается так:

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}

Теперь код, указанный в начале статьи:

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}

будет удалять лишние пробелы:

str.trim(): 'строка'

Файлы для скачивания

Скрипт JScript — функция и метод trim() для WSH на Яндекс.Диске

Все скрипты и командные файлы

Узнать больше

Подключение файлов скриптов (JS/VBS) – как подключить код функции через WSF, чтобы не копировать его вручную между файлами.

Does JScript support string trim method?

JavaScript String trim() Method

Метод trim в WSH/JScript
Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *