Для удаления начальных и конечных пробелов в строке используется метод 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