Описание функции


RemoveNonWordChars

Удаляет из строки все символы не слова (удаляет \W на языке регвыр).

RemoveNonWordChars(*c.Character)

Параметры

*c.Character Указатель на строку, одновременно являющийся структурой "Character"

Примечания

Как любая другая функция посимвольной обработки имеет возможность перенастроить функцию используя другие условия для определения символов.
Также можно добавить возрат флага о том, что строка была модифицирована.
Функция модифицирует переданную ей строку по указателю, поэтому если нужен её оригинал надо сделать копию переменной.

См. также

IsLatin

Пример

; https://www.purebasic.fr/english/viewtopic.php?p=604873#p604873
EnableExplicit

Procedure RemoveNonWordChars(*c.Character)
    Protected *c2.Character

    If *c = 0 Or *c\c = 0
        ProcedureReturn 0
    EndIf
    *c2 = *c

    While *c\c
        Select *c\c
            Case '0' To '9', 'a' To 'z', 'A' To 'Z', '_'
                If *c2 <> *c
                    *c2\c = *c\c
                EndIf
                *c2 + SizeOf(Character)
        EndSelect
        *c + SizeOf(Character)
    Wend

    If *c <> *c2
        *c2\c = 0
;         ProcedureReturn 1 ; line changed
    EndIf
EndProcedure

Define MyStr$

MyStr$ = ",!wt=-()ty3456!#$%&"
RemoveNonWordChars(@MyStr$)
Debug "|" + MyStr$ + "|"

MyStr$ = "abc123ABC_"
RemoveNonWordChars(@MyStr$)
Debug "|" + MyStr$ + "|"

MyStr$ = ""
RemoveNonWordChars(@MyStr$)
Debug "|" + MyStr$ + "|"

MyStr$ = "!@#$%*(){}[]"
RemoveNonWordChars(@MyStr$)
Debug "|" + MyStr$ + "|"

MyStr$ = "1234qwer"
RemoveNonWordChars(@MyStr$)
Debug "|" + MyStr$ + "|"