目前,为了表示 go 程序中的换行符,我使用 \n。例如:
package main
import "fmt"
func main() {
fmt.Printf("%d is %s \n", 'U', string(85))
}
... 将产生 85 is U 后跟换行符。
但是,这似乎并不是跨平台的。看看其他语言,PHP 用一个全局常量 ( PHP_EOL ) 来表示它。 \n 是在 go/golang 中以跨平台特定方式表示换行符的正确方法吗?
最佳答案
我对此很好奇,所以决定看看 fmt.Println 究竟做了什么。 http://golang.org/src/pkg/fmt/print.go
如果您滚动到最底部,您将看到一个 if addnewline,其中始终使用 \n。我很难说这是否是最“跨平台”的方式,并且 Go 在早期最初与 linux 相关联,但这就是 std lib 的所在。
我原本打算建议只使用 fmt.Fprintln 这可能仍然有效,就好像当前的功能不合适一样,可以提交一个错误,然后代码只需要使用最新的 Go 工具链编译。
关于cross-platform - 在 go/golang 中表示换行符的最便携/跨平台的方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14493867/
在Ruby(尤其是Rails)中,您经常需要检查某物是否存在,然后对其执行操作,例如:if@objects.any?puts"Wehavetheseobjects:"@objects.each{|o|puts"hello:#{o}"end这是最短的,一切都很好,但是如果你有@objects.some_association.something.hit_database.process而不是@objects呢?我将不得不在if表达式中重复两次,如果我不知道实现细节并且方法调用很昂贵怎么办?显而易见的选择是创建一个变量,然后测试它,然后处理它,但是你必须想出一个变量名(呃),它也会在内存中
使用Redcarpet,当我在Markdown中包含类似以下内容时,它不考虑任何换行符或缩进。我在行尾尝试了两个空格。代码之间的额外行。似乎没有任何效果。```xml3```我明白了:3这里是Redcarpet设置:Redcarpet::Markdown.new(Redcarpet::Render::HTML,:autolink=>true,:space_after_headers=>true,:fenced_code_blocks=>true,:no_intra_emphasis=>true,:lax_html_blocks=>true)我需要做什么才能正确换行并保留缩进,就像这里或
在Railcasts上,我注意到一个非常有趣的功能“转到符号”窗口。它像Command-T一样工作,但显示当前文件中可用的类和方法。如何在vim中获取它? 最佳答案 尝试:helptags有各种程序和脚本可以生成标记文件。此外,标记文件格式非常简单,因此很容易将sed(1)或类似的脚本组合在一起,无论您使用何种语言,它们都可以生成标记文件。轻松获取标记文件(除了下载生成器之外)的关键在于格式化样式而不是实际解析语法。 关于ruby-on-rails-Textmate'Gotosymbol
我有以下字符串,我想检测那里的换行符。但是Ruby的字符串方法include?检测不到它。我正在运行Ruby1.9.2p290。我哪里出错了?"/'ædres/\nYour".include?('\n')=>false 最佳答案 \n需要在双引号内,否则无法转义。>>"\n".include?'\n'=>false>>"\n".include?"\n"=>true 关于Ruby无法检测字符串中的换行符,我们在StackOverflow上找到一个类似的问题: h
我正在使用Sendgrid将电子邮件发送到邮件列表,使用X-SMTPAPIheader指定多个收件人。来自Sendgriddocumentation“header必须换行以将行长度保持在72以下。”我正在使用ActionMailer发送电子邮件,并使用headers方法设置X-SMTPAPIheader。为了保持行少于72个字符,我尝试用逗号+换行符+空格替换每个逗号。例如,headers["X-SMTPAPI"]={:to=>['user1@example.com','user2@example.com','user3@example.com','user4@example.com'
为什么下面的表达式会这样解析?括号的优先级应该高于换行符,不是吗?3-(1+1)#=>13-(1+1)#=>2省略加号也会让表达式计算为2:3-(11)#=>2如果我声明为连续的换行符(转义)或将加号移动到第一行,则会实现所需的行为:3-(1\+1)#=>13-(1+1)#=>1 最佳答案 这是因为Ruby将新行识别为表达式的结尾,除非表达式不完整。例如,(1+1)与相同(1;+1)这与+1相同,因为返回了括号内的最后一个表达式。这进一步与1相同。如果行尾有+,则表达式不完整,因此会继续到下一行。这使得:3-(1+1)被解释为3-(
我有一个包含换行符的字符串,我想用gsub替换空白。"helloI\r\namatest\r\n\r\nstring".gsub(/[\\r\\n]/,'')类似这样的事情^只有我的正则表达式似乎也在替换'r'和'n'字母。另一个约束是有时模式会重复两次,因此会被一行中的两个空格替换,尽管这不是可取的,但比所有文本都被切开要好。如果有办法只选择换行符。或者,如果在使用正则表达式之外还有更简单的方法来解决这个问题,那就更好了? 最佳答案 如果您有混合的连续换行符并想用单个空格替换,您可以使用以下正则表达式解决方案:s.gsub(/\R
我正在尝试在脚本中运行简单的shell命令,但即使使用chomp或chop也无法删除新行。有什么我想念的吗?u=`echo'#{l}'|cut-d:-f4`.chop()p2=`echo'#{l}'|cut-d:-f3`.chop()p1=`echo'#{l}'|cut-d:-f2`.chop()h=`echo'#{l}'|cut-d:-f1`.chop()#**Cantgetnewlinestogoafterp1andp2!!??**path="#{p1}/server/#{p2}abc"putspathOutput:/usr(p1)/server/bin(p2)abcExpecte
我有一些带有硬换行符的文本,如下所示:Thisshouldallbeononelinesinceit'sonesentence.Thisisanewparagraphthatshouldbeseparate.我想删除单个换行符但保留双换行符,所以它看起来像这样:Thisshouldallbeononelinesinceit'sonesentence.Thisisanewparagraphthatshouldbeseparate.是否有一个正则表达式可以做到这一点?(或一些简单的方法)到目前为止,这是我唯一可行但感觉很老套的解决方案。txt=txt.gsub(/(\r\n|\n|\r)/
我在删除\n和\r标签时遇到问题。当我使用双引号时,它工作正常,否则它会留下"\"。对于gsub,没有双引号根本行不通。为什么?"Remove\n".delete('\n')#result:"Remove"'Remove\n'.delete('\n')#result:"Remove\"我找到这个是因为它不适用于数据库中的结果。 最佳答案 单引号字符串不处理大多数转义序列。所以,当你有这个'\n'它的字面意思是“双字符串,第一个字符是反斜杠,第二个字符是小写的'n'”。它不表示“换行符”。为了使\n表示换行符,您必须将它放在双引号字符