Ядро JavaScript 1.5. Руководство по использованию

Изменение Порядка в Строке Ввода


В этом примере показано форматирование регулярного выражения и использование методов string.split() и string.replace(). Очищается необработанная строка ввода, содержащая имена (сначала имя, потом фамилия), разделённые пробелами, табуляцией и одиночным символом "точка с запятой". Наконец, имена и фамилии меняются местами (сначала - фамилия) и список сортируется.

<SCRIPT LANGUAGE="JavaScript1.2">

// Строка names содержит несколько пробелов и табуляций,

// и может содержать несколько пробелов между первым и последним именем.

names = new String ( "Harry Trump ;Fred Barney; Helen Rigby ;\

Bill Abel ;Chris Hand ")

document.write ("---------- Original String" + "<BR>" + "<BR>");

document.write (names + "<BR>" + "<BR>");

// Подготавливаются два патэрна регулярных выражения и массив для хранения.

// Строка делится на элементы массива.

// pattern: возможен пробел, затем точка с запятой, затем пустое пространство

pattern = /\s*;\s*/;

// Строка разбивается на куски, разделённые патэрном, и



// эти куски сохраняются в массиве nameList

nameList = names.split (pattern);

// Новый pattern: один или более символов, затем пробелы, затем символы.

// Используются скобки для "запоминания" части патэрна.

// Запомненная часть будет использоваться позднее.

pattern = /(\w+)\s+(\w+)/;

// Новый массив для содержания имён.

bySurnameList = new Array;

// Выводит массив имён и заполняет новый массив

// именами, разделёнными запятыми, сначала - фамилия.

//

// Метод replace удаляет любое совпадение с патэрном

// и замещает его запомненной строкой - второй запомненной частью,

// после которой идёт запятая, пробел и первая запомненная часть.

//

// Переменные $1 и $2 ссылаются на части,

// запомненные при совпадении патэрна.

document.write ("---------- After Split by Regular Expression" + "<BR>");

for ( i = 0; i < nameList.length; i++) {


   document.write (nameList[i] + "<BR>");

   bySurnameList[i] = nameList[i].replace (pattern, "$2, $1")

}

// Отображается новый массив.

document.write ("---------- Names Reversed" + "<BR>");

for ( i = 0; i < bySurnameList.length; i++) {

   document.write (bySurnameList[i] + "<BR>")

}

// Сортируется по фамилии, затем выводится отсортированный массив.

bySurnameList.sort();

document.write ("---------- Sorted" + "<BR>");

for ( i = 0; i < bySurnameList.length; i++) {

   document.write (bySurnameList[i] + "<BR>")

}

document.write ("---------- End" + "<BR>")

</SCRIPT>




Содержание раздела