假设我们有一个多行字符串,比如
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;
}
但是我想知道是否有更简单的(预定义)方法...
答案 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
可选地匹配回车符后跟换行符。