Neko Strings

Strings in Neko are just arrays of bytes, so they may hold any binary data. Like arrays, they are indexed beginning with zero. There is also a standard library for dealing with strings as UTF8 characters here. Strings may hold up to 229 - 1 bytes, and cannot be resized once they are created.

Literal Syntax

The literal syntax for Neko strings uses double quotes ("). Special characters may be escaped using a backslash (\). These characters are:

var s = "Hello!\\nTab\\tover\\\\there";

$print(s);

Creating Strings

An empty string (populated with null values) can be created using $smake and a specified size:

var s = $smake(10);

A copy of a string may be created using $scopy:

var s = $scopy("neko");

Accessing Strings

Individual bytes can be accessed using the $sget function which takes an index and returns an integer representing the value at that index. null is returned if the index is out of bounds.

var s = "neko";

$print($sget(s, 1)); //prints "101"

Substrings may be accessed using the $ssub function, which takes a string, a starting index, and a length. If these are out of bounds, an error is raised.

var s = "neko";

$print($ssub(s, 1, 2)); //prints "ek"

Modifying Strings

$sset will set individual bytes in a string to the given integer value between 0 and 255. Returns null if the index is out of bounds.

var s = "neko";

$sset(s, 2, 110);

$print(s); //prints "neno"

Strings may also be concatenated using +.

var a = "a";
var b = "b";
var ab = a + b;

$print(ab); //prints "ab"

To copy chunks of one string to another, use the $sblit function. This takes a starting position in the destination string, a starting position in the source string, and a length of the substring to copy. Raises an error if anything goes out of bounds.

var src = "neko";
var dst = "hello";

$sblit(dst, 2, src, 2, 2);

$print(dst); //prints "hekoo"

String Size

The size or length of a string is returned from the $ssize function.

var s = "neko";

$print($ssize(s)); //prints "4"

Finding a Substring

The $sfind function can be used to find the first occurance of a string inside another string, starting at the given position.

var s = "hello neko hello";

var pos = $sfind(s, 6, "ell");

$print(pos); //prints "12"

Converting to Strings

Any Neko value can be converted to a string using the $string function.