strdelsymb (string str, string symbols) - убирает перечисленные символы из строки
stronlysymb (string str, string symbols) - оставляет в строке только перечисленные символы
strto (string str, string symbol) - обрезает строку от начала до нужного символа
strsince (string str, string symbol) - обрезает строку с конца до нужного символа
PHP:
function strdelsymb (string str, string symbols)
//убирает из строки str символы, которые перечислены в symbols
//str максимум 300 символов, symbols максимум 100 символов
//отсутствие значений symbols понимает как отссутствие фильтра
//strdelsymb ("Hello_World2017", "0123456789_") вернет "HelloWorld".
{
char chrstr[300];
strcpy (#chrstr[0], str);
int strsize = size (#chrstr[0]);
char chrsymb[100];
strcpy (#chrsymb[0], symbols);
int symbsize = size (#chrsymb[0]);
int accept;
str = "";
for (int i = 0; i < strsize; i++)
{
accept = 1;
for (int j = 0; j < symbsize; j++)
{
if (chrstr[i] == chrsymb[j]) accept = 0;
}
if (accept == 1) str = str + chrstr[i];
}
return str;
}
function stronlysymb (string str, string symbols)
//убирает из строки str все, кроме перечисленого в symbols
//str максимум 300 символов, symbols максимум 500 символов
//отсутствие значений symbols понимает как отссутствие выбора и возврашает пустую строку
//stronlysymb ("Hello_World2017", "0123456789_") вернет "_2017".
{
char chrstr[300];
strcpy (#chrstr[0], str);
int strsize = size (#chrstr[0]);
char chrsymb[500];
strcpy (#chrsymb[0], symbols);
int symbsize = size (#chrsymb[0]);
int accept;
str = "";
for (int i = 0; i < strsize; i++)
{
accept = 0;
int j = 0;
while (j < symbsize && accept == 0)
{
if (chrstr[i] == chrsymb[j]) accept = 1;
j++;
}
if (accept == 1) str = str + chrstr[i];
}
return str;
}
function strto (string str, string symbol)
//убирает из строки str все что найдено после первого символа symbol в строке str
//str максимум 300 символов, symbol максимум 1 символ ессьно, иначе вернет str
//отсутствие значения symbol понимает как начало строки str
//strto ("Hello_World2017", "h") вернет "Hello_World2017".
//strto ("Hello_World2017", "_") вернет "Hello".
//strto ("Hello_World2017", "o") вернет "Hell".
{
char chrstr[300];
strcpy (#chrstr[0], str);
int strsize = size (#chrstr[0]);
int accept = -1;
string strnew = "";
int i = 0;
while (i < strsize && accept == -1)
{
if (chrstr[i] == symbol)
{
accept = i;
}
i++;
}
for (i = 0; i < accept; i++)
{
strnew = strnew + chrstr[i];
}
if (strnew != "") str = strnew;
return str;
}
function strsince (string str, string symbol)
//убирает из строки str все что найдено до последнего символа symbol в строке str
//str максимум 300 символов, symbol максимум 1 символ ессьно, иначе вернет str
//отсутствие значения symbol понимает как начало строки str
//strsince ("Hello_World2017", "h") вернет "Hello_World2017".
//strsince ("Hello_World2017", "_") вернет "_World2017".
//strsince ("Hello_World2017", "o") вернет "orld2017".
{
char chrstr[300];
strcpy (#chrstr[0], str);
int strsize = size (#chrstr[0]);
int accept = 0;
str = "";
for (int i = 0; i < strsize; i++)
{
if (chrstr[i] == symbol)
{
accept = i;
}
}
for (i = accept; i < strsize; i++)
{
str = str + chrstr[i];
}
return str;
}
//убирает из строки str символы, которые перечислены в symbols
//str максимум 300 символов, symbols максимум 100 символов
//отсутствие значений symbols понимает как отссутствие фильтра
//strdelsymb ("Hello_World2017", "0123456789_") вернет "HelloWorld".
{
char chrstr[300];
strcpy (#chrstr[0], str);
int strsize = size (#chrstr[0]);
char chrsymb[100];
strcpy (#chrsymb[0], symbols);
int symbsize = size (#chrsymb[0]);
int accept;
str = "";
for (int i = 0; i < strsize; i++)
{
accept = 1;
for (int j = 0; j < symbsize; j++)
{
if (chrstr[i] == chrsymb[j]) accept = 0;
}
if (accept == 1) str = str + chrstr[i];
}
return str;
}
function stronlysymb (string str, string symbols)
//убирает из строки str все, кроме перечисленого в symbols
//str максимум 300 символов, symbols максимум 500 символов
//отсутствие значений symbols понимает как отссутствие выбора и возврашает пустую строку
//stronlysymb ("Hello_World2017", "0123456789_") вернет "_2017".
{
char chrstr[300];
strcpy (#chrstr[0], str);
int strsize = size (#chrstr[0]);
char chrsymb[500];
strcpy (#chrsymb[0], symbols);
int symbsize = size (#chrsymb[0]);
int accept;
str = "";
for (int i = 0; i < strsize; i++)
{
accept = 0;
int j = 0;
while (j < symbsize && accept == 0)
{
if (chrstr[i] == chrsymb[j]) accept = 1;
j++;
}
if (accept == 1) str = str + chrstr[i];
}
return str;
}
function strto (string str, string symbol)
//убирает из строки str все что найдено после первого символа symbol в строке str
//str максимум 300 символов, symbol максимум 1 символ ессьно, иначе вернет str
//отсутствие значения symbol понимает как начало строки str
//strto ("Hello_World2017", "h") вернет "Hello_World2017".
//strto ("Hello_World2017", "_") вернет "Hello".
//strto ("Hello_World2017", "o") вернет "Hell".
{
char chrstr[300];
strcpy (#chrstr[0], str);
int strsize = size (#chrstr[0]);
int accept = -1;
string strnew = "";
int i = 0;
while (i < strsize && accept == -1)
{
if (chrstr[i] == symbol)
{
accept = i;
}
i++;
}
for (i = 0; i < accept; i++)
{
strnew = strnew + chrstr[i];
}
if (strnew != "") str = strnew;
return str;
}
function strsince (string str, string symbol)
//убирает из строки str все что найдено до последнего символа symbol в строке str
//str максимум 300 символов, symbol максимум 1 символ ессьно, иначе вернет str
//отсутствие значения symbol понимает как начало строки str
//strsince ("Hello_World2017", "h") вернет "Hello_World2017".
//strsince ("Hello_World2017", "_") вернет "_World2017".
//strsince ("Hello_World2017", "o") вернет "orld2017".
{
char chrstr[300];
strcpy (#chrstr[0], str);
int strsize = size (#chrstr[0]);
int accept = 0;
str = "";
for (int i = 0; i < strsize; i++)
{
if (chrstr[i] == symbol)
{
accept = i;
}
}
for (i = accept; i < strsize; i++)
{
str = str + chrstr[i];
}
return str;
}
Всем бобра! =)
(Добавление)
Вот еще парочка:
strfindto (string str, int from, int to) - обрезает строку с from-ного символа по to-тый (в т.ч. и с конца строки)
strfind (string str, int from, int length) - обрезает строку с from-ного символа на длину length (в т.ч. и с конца строки)
PHP:
function strfindto (string str, int from, int to)
//выбирает из строки str все что найдено с from-ного по счету символа по to-тый
//отрицательные значения понимает как направление с конца строки str к началу
//str максимум 300 символов, from и to целые числа (понимаются как две позиции в строке)
//отсутствие length понимается как выбор от начала строки до указанного значения from.
//strfindto ("Hello_World2017") вернет "H".
//strfindto ("Hello_World2017", 0) вернет "H".
//strfindto ("Hello_World2017", 5) вернет "Hello".
//strfindto ("Hello_World2017", -5) вернет "Hello_World".
//strfindto ("Hello_World2017", 0, 0) вернет "Hello_World2017".
//strfindto ("Hello_World2017", 0, 20) вернет "Hello_World2017".
//strfindto ("Hello_World2017", 0, -15) вернет "H".
//strfindto ("Hello_World2017", 1, -1) вернет "Hello_World2017".
//strfindto ("Hello_World2017", 1, -15) вернет "H".
//strfindto ("Hello_World2017", -1, 1) вернет "Hello_World2017".
//strfindto ("Hello_World2017", -1, -15) вернет "Hello_World2017".
//strfindto ("Hello_World2017", 1, 5) вернет "Hello".
//strfindto ("Hello_World2017", 0, 5) вернет "Hello".
//strfindto ("Hello_World2017", 7, 5) вернет "o_W".
//strfindto ("Hello_World2017", 5, 7) вернет "o_W".
//strfindto ("Hello_World2017", -7, 5) вернет "o_Wor".
//strfindto ("Hello_World2017", 5, -7) вернет "o_Wor".
//strfindto ("Hello_World2017", -5, 7) вернет "World".
//strfindto ("Hello_World2017", 7, -5) вернет "World".
//strfindto ("Hello_World2017", -7, -5) вернет "rld".
//strfindto ("Hello_World2017", -5, -7) вернет "rld".
{
char chrstr[300];
strcpy (#chrstr[0], str);
int strsize = size (#chrstr[0]);
int pos1 = 0;
int pos2 = strsize;
int posb = 0;
int pose = strsize;
if (from > 0) {from = from - 1; pos1 = from;}
if (from < 0) {pos1 = strsize + from;}
if (to == 0) {to = strsize; pos2 = to;}
if (to > 0 ) {to = to - 1; pos2 = to;}
if (to < 0 ) {pos2 = strsize + to;}
if (pos1 > strsize) pos1 = strsize;
if (pos1 < 0) pos1 = 0;
if (pos2 > strsize) pos2 = strsize;
if (pos2 < 0) pos2 = 0;
if (pos1 > pos2) {posb = pos2; pose = pos1;}
else {posb = pos1; pose = pos2;}
str = "";
for (int i = posb; i <= pose; i++)
{
str = str + chrstr[i];
}
return str;
}
function strfind (string str, int from, int length)
//выбирает из строки str все что найдено с from-ного по счету символа на length символов
//отрицательные значения понимает как направление с конца строки str к началу
//str максимум 300 символов, from и length целые числа
//отсутствие length понимается как выбор от начала строки до указанного значения from.
//strfind ("Hello_World2017") вернет "H".
//strfind ("Hello_World2017", 0) вернет "H".
//strfind ("Hello_World2017", 5) вернет "Hello".
//strfind ("Hello_World2017", -5) вернет "Hello_World".
//strfind ("Hello_World2017", 0, 0) вернет "Hello_World2017".
//strfind ("Hello_World2017", 0, 20) вернет "Hello_World2017".
//strfind ("Hello_World2017", 0, -15) вернет "H".
//strfind ("Hello_World2017", 1, -1) вернет "H".
//strfind ("Hello_World2017", 1, -15) вернет "H".
//strfind ("Hello_World2017", -1, 1) вернет "7".
//strfind ("Hello_World2017", -1, -15) вернет "Hello_World2017".
//strfind ("Hello_World2017", 1, 5) вернет "Hello".
//strfind ("Hello_World2017", 0, 5) вернет "Hello".
//strfind ("Hello_World2017", 7, 5) вернет "World".
//strfind ("Hello_World2017", 5, 7) вернет "o_World".
//strfind ("Hello_World2017", -7, 5) вернет "rld20".
//strfind ("Hello_World2017", -5, 7) вернет "d2017".
//strfind ("Hello_World2017", 7, -5) вернет "llo_W".
//strfind ("Hello_World2017", 5, -7) вернет "Hello".
//strfind ("Hello_World2017", -7, -5) вернет "o_Wor".
//strfind ("Hello_World2017", -5, -7) вернет "o_World".
{
char chrstr[300];
strcpy (#chrstr[0], str);
int strsize = size (#chrstr[0]);
int pos1 = 0;
int pos2 = strsize;
int posb = 0;
int pose = strsize;
if (from > 0) {from = from - 1; pos1 = from;}
if (from < 0) {pos1 = strsize + from;}
if (length == 0) {length = strsize; pos2 = pos1 + length;}
if (length > 0 ) {length = length - 1; pos2 = pos1 + length;}
if (length < 0 ) {length = length + 1; pos2 = pos1 + length;}
if (pos1 > strsize) pos1 = strsize;
if (pos1 < 0) pos1 = 0;
if (pos2 > strsize) pos2 = strsize;
if (pos2 < 0) pos2 = 0;
if (pos1 > pos2) {posb = pos2; pose = pos1;}
else {posb = pos1; pose = pos2;}
str = "";
for (int i = posb; i <= pose; i++)
{
str = str + chrstr[i];
}
return str;
}
//выбирает из строки str все что найдено с from-ного по счету символа по to-тый
//отрицательные значения понимает как направление с конца строки str к началу
//str максимум 300 символов, from и to целые числа (понимаются как две позиции в строке)
//отсутствие length понимается как выбор от начала строки до указанного значения from.
//strfindto ("Hello_World2017") вернет "H".
//strfindto ("Hello_World2017", 0) вернет "H".
//strfindto ("Hello_World2017", 5) вернет "Hello".
//strfindto ("Hello_World2017", -5) вернет "Hello_World".
//strfindto ("Hello_World2017", 0, 0) вернет "Hello_World2017".
//strfindto ("Hello_World2017", 0, 20) вернет "Hello_World2017".
//strfindto ("Hello_World2017", 0, -15) вернет "H".
//strfindto ("Hello_World2017", 1, -1) вернет "Hello_World2017".
//strfindto ("Hello_World2017", 1, -15) вернет "H".
//strfindto ("Hello_World2017", -1, 1) вернет "Hello_World2017".
//strfindto ("Hello_World2017", -1, -15) вернет "Hello_World2017".
//strfindto ("Hello_World2017", 1, 5) вернет "Hello".
//strfindto ("Hello_World2017", 0, 5) вернет "Hello".
//strfindto ("Hello_World2017", 7, 5) вернет "o_W".
//strfindto ("Hello_World2017", 5, 7) вернет "o_W".
//strfindto ("Hello_World2017", -7, 5) вернет "o_Wor".
//strfindto ("Hello_World2017", 5, -7) вернет "o_Wor".
//strfindto ("Hello_World2017", -5, 7) вернет "World".
//strfindto ("Hello_World2017", 7, -5) вернет "World".
//strfindto ("Hello_World2017", -7, -5) вернет "rld".
//strfindto ("Hello_World2017", -5, -7) вернет "rld".
{
char chrstr[300];
strcpy (#chrstr[0], str);
int strsize = size (#chrstr[0]);
int pos1 = 0;
int pos2 = strsize;
int posb = 0;
int pose = strsize;
if (from > 0) {from = from - 1; pos1 = from;}
if (from < 0) {pos1 = strsize + from;}
if (to == 0) {to = strsize; pos2 = to;}
if (to > 0 ) {to = to - 1; pos2 = to;}
if (to < 0 ) {pos2 = strsize + to;}
if (pos1 > strsize) pos1 = strsize;
if (pos1 < 0) pos1 = 0;
if (pos2 > strsize) pos2 = strsize;
if (pos2 < 0) pos2 = 0;
if (pos1 > pos2) {posb = pos2; pose = pos1;}
else {posb = pos1; pose = pos2;}
str = "";
for (int i = posb; i <= pose; i++)
{
str = str + chrstr[i];
}
return str;
}
function strfind (string str, int from, int length)
//выбирает из строки str все что найдено с from-ного по счету символа на length символов
//отрицательные значения понимает как направление с конца строки str к началу
//str максимум 300 символов, from и length целые числа
//отсутствие length понимается как выбор от начала строки до указанного значения from.
//strfind ("Hello_World2017") вернет "H".
//strfind ("Hello_World2017", 0) вернет "H".
//strfind ("Hello_World2017", 5) вернет "Hello".
//strfind ("Hello_World2017", -5) вернет "Hello_World".
//strfind ("Hello_World2017", 0, 0) вернет "Hello_World2017".
//strfind ("Hello_World2017", 0, 20) вернет "Hello_World2017".
//strfind ("Hello_World2017", 0, -15) вернет "H".
//strfind ("Hello_World2017", 1, -1) вернет "H".
//strfind ("Hello_World2017", 1, -15) вернет "H".
//strfind ("Hello_World2017", -1, 1) вернет "7".
//strfind ("Hello_World2017", -1, -15) вернет "Hello_World2017".
//strfind ("Hello_World2017", 1, 5) вернет "Hello".
//strfind ("Hello_World2017", 0, 5) вернет "Hello".
//strfind ("Hello_World2017", 7, 5) вернет "World".
//strfind ("Hello_World2017", 5, 7) вернет "o_World".
//strfind ("Hello_World2017", -7, 5) вернет "rld20".
//strfind ("Hello_World2017", -5, 7) вернет "d2017".
//strfind ("Hello_World2017", 7, -5) вернет "llo_W".
//strfind ("Hello_World2017", 5, -7) вернет "Hello".
//strfind ("Hello_World2017", -7, -5) вернет "o_Wor".
//strfind ("Hello_World2017", -5, -7) вернет "o_World".
{
char chrstr[300];
strcpy (#chrstr[0], str);
int strsize = size (#chrstr[0]);
int pos1 = 0;
int pos2 = strsize;
int posb = 0;
int pose = strsize;
if (from > 0) {from = from - 1; pos1 = from;}
if (from < 0) {pos1 = strsize + from;}
if (length == 0) {length = strsize; pos2 = pos1 + length;}
if (length > 0 ) {length = length - 1; pos2 = pos1 + length;}
if (length < 0 ) {length = length + 1; pos2 = pos1 + length;}
if (pos1 > strsize) pos1 = strsize;
if (pos1 < 0) pos1 = 0;
if (pos2 > strsize) pos2 = strsize;
if (pos2 < 0) pos2 = 0;
if (pos1 > pos2) {posb = pos2; pose = pos1;}
else {posb = pos1; pose = pos2;}
str = "";
for (int i = posb; i <= pose; i++)
{
str = str + chrstr[i];
}
return str;
}