|    | 
СИ-БИ техника | КВ техника | УКВ техника | Радиоизмерения | Защита от TVI | Источники питания | Софт | Расчеты | Справочники
Главная arrow Программирование arrow Java arrow Манипуляции строковыми значениями  

Манипуляции строковыми значениями

Оглавление
Манипуляции строковыми значениями
Страница 2
Страница 3
Страница 4
Страница 5
Страница 3 из 5

Подсчет всех вхождений подстроки в строку

Проблема

Очень часто бывает нужно подсчитать, сколько раз в заданную строку входит какая-либо подстрока. Как это сделать?

Решение 1

Использование функции jspsAllMatches (листинг 1.7), формат вызова которой выглядит так:

jspsAllMatches(<Строка>, <Искомая подстрока>);

Собственно, объяснений здесь особых не требуется. Первым параметром передается Строка, в которой выполняется поиск всех вхождений подстроки. Вторым же параметром передается сама искомая подстрока. Возвращает

функция число вхождений Искомой подстроки В Строку.

Листинг 1.7. Функция jspsAllMatches, возвращающая число вхождений подстроки в строке

function jspsAllMatches(workString, searchSubstring) {

var nSS = 0;

var nWSLen = workString.length; var nSSLen = searchSubstring.length; var nP = workString.indexOf(searchSubstring); while (nP != -1) {

nSS++;

nP += nSSLen;

nP = workString.indexOf(searchSubstring, nP) ; } return nSS; }

Пример

var s = "JavaScript";

var n = jspsAllMatches(s, "a");

Приведенный в листинге 1.7 сценарий поместит в переменную п число 2 — это количество букв "а" в слове "JavaScript".

Решение 2

Использование метода allMatches объекта string (листинг 1.8), формат вызова которого:

<Строка>. allMatches {<Искомая подстрока>) ;

Листинг 1.8 Meтод allMatches объекта String, возвращающий число вхождений подстроки в строке

function mjspsAllMatches(searchSubstring)

{                                                                                                                                 

var workString = new String(this); var nSS = 0;

var nWSLen = workString.length; var nSSLen = searchSubstring.length; var nP = workString.indexOf(searchSubstring); while (nP != -1) {

nSS++;

nP += nSSLen;

nP = workString.indexOf(searchSubstring, nP); } return nSS; }

String.prototype.ailMatches = mjspsAllMatches;

Пример

var s = "JavaScript";

var n = s.allMatches("a");

Замены подстроки другой подстрокой

Проблема

Очень часто приходится выполнять замену подстроки в строке другой подстрокой. Язык JavaScript не содержит для этого никаких встроенных средств, что сильно осложняет задачу программистов.

Решение 1

Использование функции jspsstringReplace (листинг 1.9), формат вызова которой выглядит так:

jspsstringReplace{<Строка>, <Искомая подстрока>, <Заменяющая подстрока> [, <Номер вхождения искомой подстроки>]);

Эта функция принимает четыре параметра. Первым параметром передается собственно Строка, которую нужно обработать с помощью этой функции. Второй и третий параметры в объяснении не нуждаются. Что касается четвертого, необязательного, параметра, то он задает номер вхождения искомой подстроки в Строку, которое нужно заменить (подстроки нумеруются, начиная с единицы). Если этот параметр не задан, выполняется замена первой найденной Искомой подстроки.

Функция возвращает обработанную строку, в которой найденное вхождение

Искомой подстроки заменено. Если искомая подстрока в Строке не встретилась, возвращается неизмененная Строка.

Листинг 1.9. Функция jspsStringReplace заменяющая заданную подстроку другой подстрокой

function jspsStringReplace(workString, searchSubstring, replaceSubstring, substringNumber) {

var s1, s2, nSS = 1;

if (!substringNumber) substringNumber = 1; var nWSLen = workstring.length; var nSSLen = searchSubstring.length; var nP = workstring.indexOf(searchSubstring); while (nP !=-1) {

if (nSS == substringNumber) {

s1 = workstring.substring(0, nP); s2 = workstring.substring(nP + nSSLen, nWSLen); workstring = s1 + replaceSubstring + s2; break;                                                                                                             

nP = workstring.indexOf(searchSubstring, nP + 1); nSS++;

} return workstring;

}

Примеры

var s1 = "Здравствуйте, <имя посетителям>!";

var s2 = jspsStringReplace(s1, "<имя посетителя>", "Вася Пупкин");

document.write(s2);


« Пред. - След. »


RLBN.ru - Электроника и компьютеры

0.158
Hosted by uCoz