Escape karakteri yok, TOCHAR() var

TROIA hardcode string'leri tek tırnak (') ile sınırlar, ama escape karakteri desteklemez. Bir string'in içine tek tırnak ya da yeni satır eklemek için TOCHAR() fonksiyonu, karakterin ondalık ASCII kodunu alır:

LOCAL:
    STRING METIN;

METIN = 'Merhaba' + TOCHAR(39) + ' dünya!' + TOCHAR(10) + 'İkinci satır.';
/* TOCHAR(39) : tek tırnak ('), TOCHAR(10) : yeni satır */

STRING mi, STRINGBUILDER mı?

+ operatörüyle string birleştirmek (concatenation) kolay ama çok sayıda birleştirmede yavaştır. Performans kritikse STRINGBUILDER tipi ve APPENDSTRING komutu kullanılır:

LOCAL:
    STRINGBUILDER SB;

APPENDSTRING 'Merhaba ' TO SB;
APPENDSTRING 'dünya!' TO SB;

STRINGBUILDER, yalnızca string biriktirme için tasarlanmıştır; sıradan string işlemlerinde STRING kullanmaya devam etmek önerilir.

PARSE: string üzerinde döngü

Bir string'i ayraçla (delimiter) parçalayıp her parça için işlem yapmak için PARSE komutu kullanılır — BREAK/CONTINUE burada da geçerlidir:

LOCAL:
    STRING TOKEN,
    STRING VERI;

VERI = '1|Ankara|2|Istanbul|3|Izmir';

PARSE VERI INTO TOKEN DELIMITER '|'
BEGIN
    IF ISNUMERIC(TOKEN) THEN
        CONTINUE;
    ENDIF;
    SONUC = SONUC + TOKEN + TOCHAR(10);
ENDPARSE;

Ayraç verilmezse PARSE, string'i satır satır (yeni satır karakterine göre) böler.

Sık kullanılan fonksiyonlar

STRLEN, STRPOS, TRIM, REPLACE, STRSTR, UPPERCASE/LOWERCASE en temel string fonksiyonlarıdır. Ayrıca BASE64ENCODE/BASE64DECODE ile Base64 dönüşümü, GETDIGEST(deger, 'SHA1') ile hash alma doğrudan dil seviyesinde desteklenir — ayrı bir kütüphaneye ihtiyaç yoktur.

Sonuç

TROIA'da string işlemleri sade ama iki alışkanlık gerektiriyor: özel karakterler için TOCHAR(), performans kritik birleştirmeler için STRINGBUILDER.