72158e7b

Изменение порядка в строке ввода



Изменение порядка в строке ввода

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

<SCRIPT LANGUAGE="JavaScript1.2">// Строка name содержит несколько пробелов и табуляций,
// и может иметь несколько пробелов между первым и последним именами.
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 = /\s*;\s*/// Разбивка строки на куски, разделённые вышеуказанным патэрном,
// и сохранение этих кусков в массиве nameList
nameList = names.split (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>



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