Strings and Runes in UnrealScript

UnrealScript doesn’t have a direct equivalent to Go’s string and rune handling, but we can demonstrate similar concepts using strings and characters. Note that UnrealScript uses UTF-16 encoding for strings.

class StringsAndCharacters extends Object;

var string ThaiHello;

function Init()
{
    ThaiHello = "สวัสดี";
    
    `log("Len:" @ Len(ThaiHello));
    
    local int i;
    for (i = 0; i < Len(ThaiHello); i++)
    {
        `log("Character at" @ i @ ":" @ Asc(Mid(ThaiHello, i, 1)));
    }
    
    `log("Character count:" @ Len(ThaiHello));
    
    for (i = 0; i < Len(ThaiHello); i++)
    {
        `log("Character" @ Mid(ThaiHello, i, 1) @ "starts at" @ i);
        ExamineCharacter(Mid(ThaiHello, i, 1));
    }
}

function ExamineCharacter(string Char)
{
    if (Char == "t")
    {
        `log("found tee");
    }
    else if (Char == "ส")
    {
        `log("found so sua");
    }
}

DefaultProperties
{
}

In UnrealScript, strings are sequences of UTF-16 encoded characters. Unlike Go, there’s no separate concept of “runes”, but we can work with individual characters in a string.

We define a constant string ThaiHello with the Thai word for “hello”.

The Len function returns the number of characters in the string. This is equivalent to both the byte length and character count in UnrealScript, as it uses UTF-16 encoding.

We can iterate through the string using a for loop and the Mid function to extract individual characters. The Asc function is used to get the Unicode code point of each character.

UnrealScript doesn’t have a built-in way to decode UTF-16 characters, so we simply iterate through the string character by character.

The ExamineCharacter function demonstrates how to compare individual characters. In UnrealScript, we can directly compare single-character strings.

Note that UnrealScript doesn’t have anonymous functions or closures, so we define a separate function for examining characters.

To use this class, you would typically create an instance of it and call the Init function. The exact method depends on how you’re integrating this into your UnrealScript project.

Remember that UnrealScript’s string handling is simpler than Go’s, and it doesn’t have the same level of Unicode support. This example demonstrates the closest equivalent concepts available in UnrealScript.