Przejdź do zawartości

AutoIt/Łańcuchy tekstowe (stringi) - funkcje obsługi

Z Wikibooks, biblioteki wolnych podręczników.

Konwersja: String tekstowy <> String HEX

[edytuj]

_String To Hex

[edytuj]
#include <String.au3>
_StringToHex ( $sString )

Funkcja zamienia łańcuch tekstowy na łańcuch szesnastkowego zapisu kodów kolejnych znaków. Zwraca string HEX, lub string pusty gdy wystąpił błąd.

$sString - przetwarzany string tekstowy

_HexToString

[edytuj]
#include <String.au3>
_HexToString ( $sHex )

Funkcja zamienia łańcuch szesnastkowego zapisu kodów kolejnych znaków na łańcuch tekstowy. Zwraca string tekstowy, lub string pusty gdy wystąpił błąd (makro #error<>0).

$sHex - przetwarzany string HEX

Przykład:

#include <String.au3>

$sString1 = "Ala ma kota"
$sHex = _StringToHex($sString1)
$sString2 = _HexToString($sHex)

MsgBox(0, "Test:", "String oryginalny: " & $sString1 & @CRLF & _
                    "String Hex: " & $sHex & @CRLF & @CRLF & _
                    "String odtworzony: " & $sString2 )


Konwersja String -> Tablica

[edytuj]

_StringBetween

[edytuj]
#include <String.au3>
_StringBetween ( $sString, $sStart, $sEnd [, $iMode = $STR_ENDISSTART [, $bCase = False]] )

Funkcja tworzy jednowymiarową tablicę, w której kolejnych komórkach zapisane są fragmenty stringu ograniczone znacznikami. Jeżeli wystąpił błąd makro @error<>0, @error=1 oznacza, że nie znaleziono stringu.

$sString - string do podziału

$sStart - string będący znacznikiem początku szukanego fragmentu

$sEnd - string będący znacznikiem końca szukanego fragmentu

$iMode - określa sposób działania, gdy $sStart = $sEnd

$STR_ENDISSTART   - (0) - znacznik kończący dany fragment jest jednocześnie początkiem następnego (wartość domyślna)
$STR_ENDNOTSTART  - (1) - znacznik kończący dany fragment nie jest początkiem następnego, początkiem kolejnego fragmentu jest dopiero ponowne wystąpienie znacznika

bCase - False wielkość liter w znaczniku nie ma znaczenia (wartość domyślna), True wielkość liter ma znaczenia (np. znaczniki /a i /A są różne)

Przykład:

#include <Array.au3>
#include <String.au3>

$aArray = _StringBetween("Tego nie będzie/*Ala*/ /*ma*/ /*kota*/I tego te nie będzie", "/*", "*/")
_ArrayDisplay($aArray, "Domyślne wyszukiwanie:")

$aArray = _StringBetween("--/Ala/ /ma/ /kota/??", "/", "/")
_ArrayDisplay($aArray, "$STR_ENDISSTART:")

$aArray = _StringBetween("--/Ala/ /ma/ /kota/??", "/", "/", $STR_ENDNOTSTART)
_ArrayDisplay($aArray, "$STR_ENDNOTSTART")


_StringExplode

[edytuj]
#include <String.au3>
_StringExplode ( $sString, $sDelimiter [, $iLimit = 0] )

Funkcja tworzy jednowymiarową tablicę, w której kolejnych komórkach zapisane są fragmenty stringu podzielonego w miejscu znacznika (w stylu PHP).

$sString - string do podziału

$sDelimiter - znacznik podziału stringu

$iLimit - limit ilości fragmentów po podziale stringu

$iLimit = 0 - brak limitu (wartość domyślna)
$iLimit > 0 - ilość fragmentów, na które dzielony jest string, po jego osiągnięciu string nie jest dalej dzielony mimo istnienia dalszych znaczników
$iLimit < 0 - ilość końcowych fragmentów nie zapisywanych w tablicy

Przykład:

#include <Array.au3>
#include <String.au3>

$sText = "jeden//dwa//trzy//cztery//pięć//sześć//siedem//osiem"
$aArray1 = _StringExplode($sText, "//")
_ArrayDisplay($aArray1, "StringExplode (0):")

$aArray2 = _StringExplode($sText, "//", 5)
_ArrayDisplay($aArray2, "StringExplode (5):")

$aArray3 = _StringExplode($sText, "//", -3)
_ArrayDisplay($aArray3, "StringExplode (-3):")


Tworzenie i przetwarzanie stringów

[edytuj]

_StringInsert

[edytuj]
#include <String.au3>
_StringInsert ( $sString, $sInsertString, $iPosition )

Funkcja tworzy string przez wstawienie stringu $sInsertString do wnętrza stringu $sString (w trybie INSERT). Jeżeli wystąpił błąd zwracany jest $sString, a makro @error<>0.

$sString - string wejściowy

$sInsertString - string wstawiany

$iPosition - pozycja, od której ma być wstawiony string $sInsertString do stringu $sString

Przykład:

#include <String.au3>

MsgBox(0, "_StringInsert", _StringInsert("Ala kota.", " ma", 3))


_StringRepeat

[edytuj]
#include <String.au3>
_StringRepeat ( $sString, $iRepeatCount )

Funkcja tworzy string z wielokrotnego powtórzenia stringu wejściowego. Jeżeli wystąpił błąd zwracany jest string pusty, a makro @error<>0.

$sString - string wejściowy

$iRepeatCount - ilość powtórzeń stringu $sString

Przykład:

#include <String.au3>

MsgBox(0, "_StringRepeat", _StringRepeat("Echo! ", 10))


_StringProper

[edytuj]
#include <String.au3>
_StringProper ( $sString )

Funkcja tworzy string po zamianie wielkości liter w stringu wejściowego w taki sposób, że każdy wyraz zaczyna się od wielkiej litery, a pozostałe litery są małe. Jeżeli wystąpił błąd to zwracany jest pusty string.

$sString - string wejściowy

UWAGA: Funkcja nie działa poprawnie z polskimi literami.

Przykład:

#include <String.au3>

MsgBox(0, "_StringProper", _StringProper("ala ma kota."))

MsgBox(0, "_StringProper", _StringProper("ALA ma kOTA i psa."))


_StringTitleCase

[edytuj]
#include <String.au3>
_StringTitleCase ( $sString )

Funkcja tworzy string po zamianie wielkości liter w stringu wejściowego w taki sposób, że każdy wyraz zaczyna się od wielkiej litery, a pozostałe litery są małe. Jeżeli wystąpił błąd to zwracany jest pusty string.

$sString - string wejściowy

UWAGA:

1. Funkcja nie działa poprawnie z polskimi literami.

2. Funkcje _StringProper i _StringTitleCase działają prawie jednakowo. Subtelną różnicę widać w poniższym przykładzie:

#include <String.au3>

$sString = "centymetR ma 10mm"
MsgBox(0, "_StringProper/_StringTitleCase", _StringProper($sString) & @CRLF & _StringTitleCase ( $sString ))