Search code examples
haxe

Get the first line of a string in haxe


Let's assume we have a multiline string, like

var s:String = "my first line\nmy second line\nmy third line\nand so on!";

What is the best way to get (only) the first line of this string in Haxe? I know I can do something like:

static function getFirstLine(s:String):String {
    var t:String = s.split("\n")[0];
    if(t.charAt(t.length - 1) == "\r") {
        t = t.substring(0, t.length - 1);
    }
    return t;
}

However I'm wondering if there is any easier (predefined) method for this ...


Solution

  • Caveat that @Gama11's answer works well and is more elegant than this.

    If your string is long, split will iterate over the whole thing and allocate an array containing every line in your string, both of which are unnecessary here. Another option would be indexOf:

    static function getFirstLine(s:String):String {
        var i = s.indexOf("\n");
        if (i == -1) return s;
        if (i > 0 && s.charAt(i - 1) == "\r") --i;
        return s.substr(0, i);
    }