[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Функции для работы со строками (Взято с world-source.ru)
Функции для работы со строками
rootДата: Воскресенье, 03.02.2013, 01:34 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Как узнать количество символов в строке: 

Код
new String:my_string[] = "1x3x5x7";  
PrintToServer("-> %d", strlen(my_string)); // 7


Как сравнить две строки (true значит, что сравниваем с учетом регистра, false - без) : 

Код
new String:x[] = "1q";  
new String:y[] = "1q";  
if (StrEqual(x, y, true)) PrintToServer("Строки равны");  
else PrintToServer("Строки не равны");


Как узнать есть ли фраза/подстрока/символы в строке. Находит первое совпадение и возвращает позицию (индекс), с которой начинается наша фраза. Если совпадений нет, вернёт -1

Код
new String:my_string[] = "avatar aAng (avatar korRa)";  
new x_pos = StrContains(my_string, "tar", true);  
PrintToServer("-> %d", x_pos); // 3


Как преобразовать строку в целое число. 
Если в строке есть какие-то левые буквы или символы, кроме цифр, то вернёт 0

Код
new String:my_string[] = "15";  
new nuM = StringToInt(my_string);  
PrintToServer("-> %d", nuM);


Как преобразовать строку в float число (с точкой): 

Код
new String:my_string[] = "15.2";  
new Float:nuM = StringToFloat(my_string);  
PrintToServer("-> %.1f", nuM);


Как преобразовать целое число в строку: 

Код
decl String:my_string[3];  
IntToString(15, my_string, 3);  
PrintToServer("-> %s", my_string);


Как преобразовать float число в строку: 

Код
decl String:my_string[5];  
FloatToString(15.0, my_string, 5);  
PrintToServer("-> %s", my_string);


Как составить строку из нескольких переменных: 

Код
new x = 1, Float:y = 2.0, String:z[] = "cat", String:my_string[75];  
Format(my_string, 75, "x = %d, y = %.1f, z = %s", x, y, z);  
PrintToServer(my_string); // x = 1, y = 2.0, z = cat


Как избавиться от кавычек по бокам (обрезать): 

Код
new String:my_string[] = "\"123\"";  
PrintToServer(my_string); // "123"  
StripQuotes(my_string);  
PrintToServer(my_string); // 123


Как убрать пробелы по бокам: 

Код
new String:my_string[] = "   1 2 3      ";  
TrimString(my_string);  
PrintToServer(my_string);


Как разбить строку по символ(у/ам) или фразе. 

Код
decl String:buf[4][10], nuM;  
if ((nuM = ExplodeString("xzy - 123-abc", "-", buf, 4, 10)) > 1)  
{  
        PrintToServer("Строка разбита на %d новых:", nuM);  
        for (new i = 0; i < nuM; i++)  
        {  
            TrimString(buf[i]);  
            PrintToServer(buf[i]);  
        }  
}  
else PrintToServer("В строке нет символа -");  

// 4 - максимальное количество новых строк  
// 10 - максимальная длина каждой строки (кол-во символов)


Как заменить в строке определённые символы на другие. 

ReplaceString(String:text[], maxlength, const String:search[], const String:replace[], bool:caseSensitive=true); 

Код
text - строка, в которой заменяем символ  
maxlength - длина строки  
search - символ, который заменяем  
replace - то, на что заменяем  
caseSensitive - если true (по умолчанию), то учитывается регистр  

Будет возвращено количество замененных символов


Пример: 

Код
#include <sourcemod>  

public OnPluginStart()  
{  
      new String:q[] = "lemur est oreh";  
      PrintToServer("%d", ReplaceString(q, sizeof(q), "lemur", "enot"));  
      PrintToServer(q);  
}


А если нужно просто удалить символ, например пробел, то так: 

Код
ReplaceString(Test, sizeof(Test), " ", "");
 
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Функции для работы со строками (Взято с world-source.ru)
  • Страница 1 из 1
  • 1
Поиск: