Grey83
не пишу плагины с весны 2022
- Сообщения
- 8,521
- Реакции
- 4,981
@Dragokas, а почему не сделать вот так?
Функции UTF8CharTo*() проигнорят же пробелы и так, поэтому нет необходимости в проверке IsCharSpace(str).
Да и цикл по строке тоже не нужен: UTF8CharTo*() сами пройдут по строке.
C-подобный:
#include <UTF-8-string>
public void OnPluginStart()
{
char TEST[] = "фАYgfвАПиаОРИГОРТUYfyutTYGFfvygtf";
PrintToServer("\n<TEST>\nOrig: %s", TEST);
int num = NormalizeName(TEST);
PrintToServer("Norm: %s\nNum: %i\n</TEST>\n", TEST, num);
}
stock int NormalizeName(char[] str)
{
if(!str[0])
return 0;
int num, start = GetCharBytes(str[0]);
char buffer[4];
int i;
while(i < start)
{
buffer[i] = str[i];
i++;
}
buffer[start] = i = 0
num = UTF8CharToUpper(buffer) + UTF8CharToLower(str[start]);
while(i < start)
{
str[i] = buffer[i];
i++;
}
return num;
}
Результат:
<TEST>
Orig: фАYgfвАПиаОРИГОРТUYfyutTYGFfvygtf
Norm: Фаygfвапиаоригортuyfyuttygffvygtf
Num: 18
</TEST>
Сообщения автоматически склеены:
Функции UTF8CharTo*() проигнорят же пробелы и так, поэтому нет необходимости в проверке IsCharSpace(str).
Да и цикл по строке тоже не нужен: UTF8CharTo*() сами пройдут по строке.
Последнее редактирование: