---
title: "Szöveg és gyűjtemények"
description: "TapHome szkript szöveg- és gyűjteményfüggvények: LENGTH, GETAT, SETAT, APPEND, INSERT, REMOVEAT, COPY, INDEXOF, REPLACE, SPLIT, COMPARE és BYTECOLLECTION, UINT16COLLECTION, BOOLCOLLECTION."
url: "https://taphome.com/hu/docs/script/text-string-and-byte-array/"
language: hu
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["string-functions","byte-array","collections","scripting-language"]
  questions: ["Hogyan kaphatom meg egy szöveg hosszát egy TapHome szkriptben?","Hogyan bonthatok fel egy szöveget elválasztó mentén a TapHome-ban?","Hogyan cserélhetek le szövegrészt egy szövegben a TapHome-ban?","Hogyan hozhatok létre bájtgyűjteményt hexadecimális értékekből?","Hogyan találhatom meg egy elem indexét egy szövegben vagy gyűjteményben?","Új gyűjteményt hoz létre az APPEND, vagy az eredetit módosítja?","Hogyan hasonlíthatok össze két szöveget egy TapHome szkriptben?"]
---

# Szöveg és gyűjtemények

TapHome szkriptfüggvények szövegekhez, gyűjteményekhez és bájttömbökhöz — LENGTH, GETAT, SETAT, APPEND, INSERT, REMOVEAT, COPY, INDEXOF, REPLACE, SPLIT, COMPARE, BYTECOLLECTION, UINT16COLLECTION, BOOLCOLLECTION.

Utoljára frissítve: 2026-11-06

Ezek a függvények első argumentumként szöveget vagy gyűjteményt fogadnak, és a karakterekkel vagy elemekkel nullától kezdődő index alapján dolgoznak.

- A **gyűjteményt** az `APPEND`, `INSERT`, `REMOVEAT`, `SETAT` és `REPLACE` **helyben** módosítja, és ugyanazt a gyűjteményt adja vissza. **Szöveg** esetén új szöveget adnak vissza.
- **Blob** típust, például a `RECEIVEDMSG.PAYLOAD` értéket, csak a `LENGTH`, a `GETAT`, a `COPY` és az `INDEXOF` fogad el.
- A `Null` első argumentum a *Parameter 1 is null* hibával leállítja a szkriptet, kivéve a `LENGTH` (0), az `INDEXOF` (-1) és a `SPLIT` (üres gyűjtemény) esetén; a `COMPARE` a *COMPARE arguments 1 and 2 must be strings* hibát jelzi.

Az `ENCODE` és a `DECODE` (XML, Base64) az [Adattípusok konverziója](https://taphome.com/hu/docs/script/data-type-conversions/) oldalon, az `EQUALS` a [Logika és diagnosztika](https://taphome.com/hu/docs/script/logic-and-diagnostics/#equals) oldalon található. A gyűjteménytípusokat az [Adattípusok](https://taphome.com/hu/docs/script/data-types/) oldal írja le.

## LENGTH

A `LENGTH` egy szöveg karaktereinek, egy gyűjtemény elemeinek vagy egy blob bájtjainak számát adja vissza; számnál a típusa méretét bájtban, `Null` esetén 0-t.

```taphome
# karakterek egy szövegben
LENGTH("Hello World");
# Result: 11
# egy szám hossza
LENGTH(40);
# Result: 8 (a decimal literal is a double)
# bájtok egy bájtgyűjteményben
LENGTH(BYTECOLLECTION("010203"));
# Result: 3
```

## GETAT

A `GETAT` az adott indexen álló elemet adja vissza: egy szöveg `char` karakterét, egy gyűjtemény elemét vagy egy blob bájtját.

```text
GETAT(value, index)
```

**Visszatérési érték** — szövegnél `char`, nem egybetűs szöveg; karakterliterállal, például `'l'` értékkel hasonlítsd össze.

```taphome
GETAT("Hello", 2);
# Result: 'l' (Char)
GETAT({1, 2, 4}, 2);
# Result: 4
```

## SETAT

A `SETAT` lecseréli az adott indexen álló elemet; a gyűjtemény helyben módosul, szövegnél pedig az indexen álló karakter helyére a `newValue` szövege kerül.

```text
SETAT(value, index, newValue)
```

```taphome
# egy karakter cseréje
SETAT("Hello", 1, "a");
# Result: "Hallo"
# karakter cseréje hosszabb szövegre
SETAT("Hello", 4, "o World");
# Result: "Hello World"
# módosítandó gyűjtemény
VAR c := {1, 2, 4};
# elem cseréje helyben
SETAT(c, 2, 3);
# Result: {1, 2, 3}, and c is now {1, 2, 3}
```

## APPEND

Az `APPEND` egy értéket fűz egy szöveg vagy gyűjtemény végére; a gyűjtemény helyben módosul, és nem másolatként, hanem önmagaként kerül visszaadásra.

```text
APPEND(value, what)
```

**Megjegyzések** — azonos elemtípusú gyűjtemény hozzáfűzésekor annak minden eleme hozzáadódik. Egyetlen érték egy elemként adódik hozzá. Más elemtípusú gyűjtemény hibát okoz (*Cannot append 'UInt8' collection to 'Double' collection*).

```taphome
# bővítendő gyűjtemény
VAR c := {1, 2};
# egy elem hozzáadása helyben
APPEND(c, 3);
# Result: {1, 2, 3}, and c is now {1, 2, 3}
# több elem hozzáadása helyben
APPEND(c, {4, 5});
# Result: {1, 2, 3, 4, 5}
# szöveg hozzáfűzése egy szöveghez
APPEND("abc", "def");
# Result: "abcdef"
```

## INSERT

Az `INSERT` egy értéket szúr be az adott indexre: részszöveget egy szövegbe, vagy elemet egy gyűjteménybe helyben.

```text
INSERT(value, index, what)
```

```taphome
# részszöveg beszúrása
INSERT("Hello", 5, " World");
# Result: "Hello World"
# karakter beszúrása
INSERT("Hello", 1, "i");
# Result: "Hiello"
# elem beszúrása egy gyűjteménybe
INSERT({1, 2, 4}, 2, 3);
# Result: {1, 2, 3, 4}
```

## REMOVEAT

A `REMOVEAT` az adott indextől kezdve `count` karaktert vagy elemet távolít el, alapértelmezetten 1-et.

```text
REMOVEAT(value, index)
REMOVEAT(value, index, count)
```

```taphome
# egy karakter eltávolítása
REMOVEAT("Hello", 1);
# Result: "Hllo"
# 2 karakter eltávolítása a 3. indextől
REMOVEAT("Hello", 3, 2);
# Result: "Hel"
# 2 elem eltávolítása egy gyűjteményből
REMOVEAT({1, 2, 3, 4}, 2, 2);
# Result: {1, 2}
```

## COPY

A `COPY` új szöveget, gyűjteményt vagy blobot ad vissza, amely a `from` pozíciótól kezdve `length` elemet tartalmaz; `length` nélkül a végéig másol, `from` nélkül a teljes értéket.

```text
COPY(value)
COPY(value, from)
COPY(value, from, length)
```

```taphome
# másolás a 2. indextől a végéig
COPY("Hello World", 2);
# Result: "llo World"
# 4 karakter másolása a 2. indextől
COPY("Hello World", 2, 4);
# Result: "llo "
# 1 bájt másolása egy blobból
COPY(BYTECOLLECTION("01020304"), 2, 1);
# Result: {0x03}
```

**Hibák** — *Parameter 1 must be a non-empty string*, ha üres szövegből másolsz.

## INDEXOF

Az `INDEXOF` egy érték első előfordulásának pozícióját adja vissza egy szövegben, gyűjteményben vagy blobban, vagy `-1` értéket, ha nem található.

```text
INDEXOF(value, what)
```

```taphome
# részszöveg pozíciója
INDEXOF("Hello World", "Wor");
# Result: 6
# ha nincs találat, az eredmény -1
INDEXOF("Hello World", "or12");
# Result: -1
# elem pozíciója egy blobban
INDEXOF(BYTECOLLECTION("ab cd ee ff 01 02"), 2);
# Result: 5
```

**Hibák** — *Parameter 2 must be a non-empty string*, ha egy szövegben üres szöveget keresel.

## REPLACE

A `REPLACE` egy érték minden előfordulását lecseréli: szövegből új szöveg lesz, a gyűjteményben pedig az egyező elemek helyben cserélődnek.

```text
REPLACE(value, what, replacement)
```

```taphome
# minden l eltávolítása
REPLACE("Hello", "l", "");
# Result: "Heo"
# részszöveg cseréje
REPLACE("Hello", "lo", "22");
# Result: "Hel22"
# elem cseréje egy blobban
REPLACE(BYTECOLLECTION("050607"), 5, 9);
# Result: {0x09, 0x06, 0x07}
```

**Hibák** — *Empty string to replace*, ha a `what` üres szöveg.

## SPLIT

A `SPLIT` minden elválasztónál feldarabolja a szöveget, és `collection<string>` gyűjteményt ad vissza; az üres részek megmaradnak.

```text
SPLIT(string, separator)
```

**Paraméterek** — a `separator` lehet `char`, szöveg, `collection<char>` vagy `collection<string>`.

```taphome
# felosztás elválasztónál
SPLIT("1;2;3;4", ";");
# Result: {"1", "2", "3", "4"}
# egy karakternél hosszabb elválasztó
SPLIT("1;2;3.4", "2;");
# Result: {"1;", "3.4"}
# több elválasztó egyszerre
SPLIT("1;2;3.4", {"2", "3."});
# Result: {"1;", ";", "4"}
```

## COMPARE

A `COMPARE` két szöveget hasonlít össze, és negatív számot ad vissza, ha az első a rendezésben a második elé kerül, 0-t, ha egyenlők, és pozitív számot, ha utána kerül; csak az előjelre hagyatkozz, a nagyságra ne.

```text
COMPARE(string1, string2)
COMPARE(string1, string2, CompareOptions)
```

**Megjegyzések** — opciók nélkül a vezérlőegység az első eltérő karakterek karakterkódjainak különbségét adja vissza, így a nagybetűk a kisbetűk elé kerülnek. `CompareOptions` (`IgnoreCase`, `IgnoreNonSpace`, `IgnoreSymbols`, `IgnoreKanaType`, `IgnoreWidth`, `OrdinalIgnoreCase`, `StringSort`, `Ordinal`, `None`) megadásakor a szövegek összehasonlítása az invariáns kultúra nyelvi szabályai szerint történik, minden vezérlőegységen ugyanúgy, ezekkel az opciókkal módosítva.

```taphome
# egyenlő szövegek eredménye 0
COMPARE("abc", "abc");
# Result: 0
# eltérő kis- és nagybetű pozitív számot ad
COMPARE("abc", "ABC");
# Result: 32
# az első szöveg a másodikat megelőzi
COMPARE("a", "c");
# Result: -2
# a kis- és nagybetű figyelmen kívül hagyása 0-t ad
COMPARE("abc", "ABC", CompareOptions.IgnoreCase);
# Result: 0
```

**Hibák** — *COMPARE arguments 1 and 2 must be strings*.

## BYTECOLLECTION

A `BYTECOLLECTION` `collection<uint8>` gyűjteményt hoz létre, vagy hexadecimális számjegyekből álló szövegből, vagy a megadott számú (1 – 2048) nulla bájttal feltöltve.

```text
BYTECOLLECTION(hexString)
BYTECOLLECTION(count)
```

**Megjegyzések** — a szöveg nem hexadecimális karaktereit figyelmen kívül hagyja, így a bájtokat szóközök, vesszők és kötőjelek is elválaszthatják; a megmaradó számjegyek számának párosnak kell lennie.

```taphome
# bájtok hexadecimális szövegből
BYTECOLLECTION("00 0A FF");
# Result: {0x00, 0x0A, 0xFF}
# hexadecimális szöveg vegyes elválasztókkal
BYTECOLLECTION("aa, be1-1,fe");
# Result: {0xAA, 0xBE, 0x11, 0xFE}
# egy szám ennyi nullbájtot ad
BYTECOLLECTION(6);
# Result: 6 zero bytes
```

**Hibák** — *Parameter must be a non-empty string*; *Length must be a multiple of 2*; *Maximum array length is 2048*; *Invalid array length. Must be greater than 0 and less than or equal 2048*.

## UINT16COLLECTION

Az `UINT16COLLECTION` 1 – 2048 nullából álló `collection<uint16>` gyűjteményt hoz létre, amelyet jellemzően a `PACKVALUE` tölt fel, és a `MODBUSWBLOCK` ír be a Modbus regiszterekbe.

```taphome
collection<uint16> regs := UINT16COLLECTION(4);
PACKVALUE(regs, 0, BigEndianFloat, 21.5);
PACKVALUE(regs, 2, Uint16, 100);
MODBUSWBLOCK(H, 200, regs);
```

**Elérhetőség** — TapHome Next 2026.1.39016+.

**Lásd még** — [Bináris adatok](https://taphome.com/hu/docs/script/binary-data/), [Modbus függvények](https://taphome.com/hu/docs/script/modbus/).

## BOOLCOLLECTION

A `BOOLCOLLECTION` 1 – 2048 `FALSE` értékből álló `collection<bool>` gyűjteményt hoz létre, jellemzően Modbus coil-ok `MODBUSWBLOCK` függvénnyel történő írásához.

```taphome
collection<bool> coils := BOOLCOLLECTION(8);
SETAT(coils, 0, TRUE);
MODBUSWBLOCK(C, 0, coils);
```

**Elérhetőség** — TapHome Next 2026.1.39016+.
