在haxe中获取字符串的第一行
Get the first line of a string in 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;
}
但是我想知道是否有任何更简单(预定义)的方法...
据我所知,标准库中没有 built-in 实用程序,但你让它更优雅一点,避免 substring()
处理 \r
拆分正则表达式:
static function getFirstLine(s:String):String {
return ~/\r?\n/.split(s)[0];
}
正则表达式 \r?\n
可选择匹配回车符 return 后跟换行符。
请注意@Gama11 的回答效果很好,比这更优雅。
如果您的字符串很长,split
将遍历整个字符串并分配一个包含字符串中每一行的数组,这两者在这里都是不必要的。另一种选择是 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);
}
假设我们有一个多行字符串,例如
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;
}
但是我想知道是否有任何更简单(预定义)的方法...
据我所知,标准库中没有 built-in 实用程序,但你让它更优雅一点,避免 substring()
处理 \r
拆分正则表达式:
static function getFirstLine(s:String):String {
return ~/\r?\n/.split(s)[0];
}
正则表达式 \r?\n
可选择匹配回车符 return 后跟换行符。
请注意@Gama11 的回答效果很好,比这更优雅。
如果您的字符串很长,split
将遍历整个字符串并分配一个包含字符串中每一行的数组,这两者在这里都是不必要的。另一种选择是 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);
}