【发布时间】:2021-06-21 00:19:23
【问题描述】:
我有一个字符串s,通常(但见下文)包含几个\n,因此可以视为多行字符串。我想得到第一行(不包括终止换行符);但如果根本没有换行符,则应返回整个字符串。示例:
"abc\ndef" -> "abc"
"\ndef" -> ""
"xyz" -> "xyz"
我的第一次尝试是
s[/.*(?=\n)/]
但如果 s 中没有换行符,则返回 nil(因为前瞻表达式不匹配)。然后我考虑了
s[0,s.index("\n")||s.length]
这确实有效,但我需要三次提及变量 (s) 并发现这在美学上令人不快。有人知道如何编写一个可以在这里使用的简洁表达式吗?
更新:我不想扫描整个字符串(通常相当大)。我需要它只解析第一个换行符。
【问题讨论】:
-
也许使用 split 功能会起作用。
-
它将整个字符串分成几行。就我而言,字符串相当长(整个文件),我不需要完全解析它。
-
s.each_line.first.chomp -
这能回答你的问题吗? Reading the first line of a file in Ruby
-
您可以将拆分限制设置为仅拆分一次。
标签: ruby