在haxe中获取字符串的第一行

时间:2018-03-04 22:10:28

标签: haxe

假设我们有一个多行字符串,比如

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

在Haxe中获取(仅)此字符串的第一行的最佳方法是什么?我知道我可以这样做:

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;
}

但是我想知道是否有更简单的(预定义)方法...

2 个答案:

答案 0 :(得分:5)

警告@ Gama11的答案效果很好,比这更优雅。

如果你的字符串很长,##get token $TENANTID="" $APPID="" $PASSWORD="" $result=Invoke-RestMethod -Uri https://login.microsoftonline.com/$TENANTID/oauth2/token?api-version=1.0 -Method Post -Body @{"grant_type" = "client_credentials"; "resource" = "https://management.core.windows.net/"; "client_id" = "$APPID"; "client_secret" = "$PASSWORD" } $token=$result.access_token ##set subscriptionId and resource group name $subscriptionId="" $resourcegroupname="shui5" $Headers=@{ 'authorization'="Bearer $token" 'host'="management.azure.com" 'contentype'='application/json' } $body='{ "location": "northeurope", "tags": { "tagname1": "test-tag" } }' Invoke-RestMethod -Uri "https://management.azure.com/subscriptions/$subscriptionId/resourcegroups/${resourcegroupname}?api-version=2015-01-01" -Headers $Headers -Method PUT -Body $body 将遍历整个事物并分配一个包含字符串中每一行的数组,这两个都是不必要的。另一种选择是split

indexOf

答案 1 :(得分:2)

我知道标准库中没有内置实用程序,但是您可以使它更优雅,并通过拆分来避免substring()\r的处理正则表达式:

static function getFirstLine(s:String):String {
    return ~/\r?\n/.split(s)[0];
}

正则表达式\r?\n可选地匹配回车符后跟换行符。