- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于与字符串相关的所有内容,我尝试坚持 80 个字符的打印边距,尤其是关于定制消息(警告、错误等)
现在,我一直想知道是否有一种简单的方法来确保自动确保/强制执行某些打印边距限制,例如如果给定的原子字符串超出了所选的打印边距,则它会自动分解为字符串向量。我用谷歌搜索了一下,但没有真正找到任何符合我需求的东西。
是否有人想出了一个很好的“ pretty-print ”功能,我可以进一步构建它?
<小时/>到目前为止,这是我自己想到的:
makePretty <- function(
string,
print.margin=80,
...
){
out <- string
if (nchar(string) > print.margin) {
times <- ceiling(nchar(string)/print.margin)
breaks <- rep(print.margin+1, times)
breaks <- cumsum(breaks)
string.spl <- unlist(strsplit(string, split=" "))
seps <- str_locate_all(string, " ")[[1]][,"start"]
queue <- NA
envir <- environment()
out <- unlist(sapply(1:length(breaks), function(ii) {
idx.next <- breaks[ii]
if (ii < length(breaks)) {
idx <- which(seps <= idx.next)
chunk <- string.spl[idx]
envir$string.spl <- envir$string.spl[-idx]
envir$seps <- envir$seps[-idx]
} else {
chunk <- string.spl
}
chunk <- paste(chunk, collapse=" ")
# Chunk could exceed print margin in case the right hand neighbor
# wasn't a blank >> check again
if (nchar(chunk) > print.margin) {
chunk <- makePretty(string=chunk, print.margin=print.margin)
envir$queue <- chunk[length(chunk)]
chunk <- chunk[-length(chunk)]
} else {
if (!is.na(envir$queue)) {
# Prepend chunk with queued chunk
chunk <- paste(envir$queue, chunk, sep=" ")
# Reset queue
envir$queue <- NA
}
}
# /
out <- chunk
return(out)
}))
}
return(out)
}
string <- "This is just an example of a very long character string that exceeds the default print margin of 80 and therefore needs some pretty printing. In fact it's so long that it needs to be broken down into three parts."
> makePretty(string=string)
[1] "This is just an example of a very long character string that exceeds the default"
[2] "print margin of 80 and therefore needs some pretty printing. In fact it's so"
[3] "long that it needs to be broken down into three parts."
> string <- "This is just an example of a very long character string that exceeds a certain print margin and therefore needs some pretty printing. In fact it's so long that it needs to be broken down into numerous parts."
> makePretty(string=string, print.margin=40)
[1] "This is just an example of a very long"
[2] "character string that exceeds a certain"
[3] "print margin and therefore needs some"
[4] "pretty printing. In fact it's so long"
[5] "that it needs to be broken down into numerous"
[6] "parts."
string <- "This is just an example of a very long character string that exceeds the default print margin of 80 and therefore needs some pretty printing. In fact it's so looooooooooooooooooooooooooooooooong that it needs to be broken down into four parts."
> makePretty(string=string)
[1] "This is just an example of a very long character string that exceeds the default"
[2] "print margin of 80 and therefore needs some pretty printing. In fact it's so"
[3] "looooooooooooooooooooooooooooooooong that it needs to be broken down into four"
[4] "parts."
string <- "This is just an example of a very long character string that exceeds the default print margin of 80 and therefore needs some pretty printing. In fact it's soooooooo looooooooooooooooooooooooooooooooong that it needs to be broken down into four parts."
> makePretty(string=string)
[1] "This is just an example of a very long character string that exceeds the default"
[2] "print margin of 80 and therefore needs some pretty printing. In fact it's"
[3] "soooooooo looooooooooooooooooooooooooooooooong that it needs to be broken down"
[4] "into four parts."
到目前为止,该方法仅依靠空格来确定哪些单词属于一起 - 这可能不涵盖其他“现实世界场景”,例如冒号、分号等。
最佳答案
基本 R 函数 strwrap
似乎完全符合您的描述:
strwrap(x, width=80)
[1] "This is just an example of a very long character string that exceeds the"
[2] "default print margin of 80 and therefore needs some pretty printing. In fact"
[3] "it's so long that it needs to be broken down into three parts."
strwrap(x, 40)
[1] "This is just an example of a very long" "character string that exceeds the"
[3] "default print margin of 80 and" "therefore needs some pretty printing."
[5] "In fact it's so long that it needs to" "be broken down into three parts."
<小时/>
您可以使用 paste
和参数 collapse="\n"
将这些片段组合成带有换行符的单个字符串:
cat(paste(strwrap(x, 40), collapse="\n"))
This is just an example of a very long
character string that exceeds the
default print margin of 80 and
therefore needs some pretty printing.
In fact it's so long that it needs to
be broken down into three parts.
关于string - 字符串的 pretty-print (确保自动换行符保持在给定的打印边距内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12160803/
我已经和 Lua 搞了几天,我想出了一些让我三思而后行的事情。 Lua 5.3 的引用手册我还没有看,因为它似乎很复杂,我会尽快查看。 好的,在 lua 5.3 中,我们知道 print() 返回 n
计算时IO (IO ()) , 两个 (IO ())和 ()是计算出来的,所以为什么 main :: IO (IO ()) main = print (print "Hello, World!")
我不太理解从以下位置收到的输出: print(print(print('aaa'))) aaa None None 先aaa清楚了。但我认为第二个 print(aaa) 会抛出一个错误,因为变量 aa
当我运行下面的 Perl one-liner 时,它会打印 1在每一行的前面,我不想要它。它应该做的只是注释匹配 root 的行. $ cat /etc/passwd | perl -ne 'prin
我发现由于 Xcode 将不再消化 println() 我是 留下 Swift.print() 或 print() 。我的问题是, 两者有什么区别?我没能 在网上或在 swift 前卫郎。 (Swif
我正在开发一个内部 Google Chrome 扩展,它需要一种方法来启动将当前页面打印到打印机。我不希望出现默认的打印对话框(因此,javascript:window.print() 是不可能的)。
我正在将 Perl6 Terminal::Print 模块用于基于控制台的应用程序。 它运行良好 - 但是,现在我需要提示用户输入一串文本。 有什么好的方法可以做到这一点? 最佳答案 这是使用 Ter
在学习第三方的Lua代码时,我发现在主脚本文件的顶部 local insert = table.insert local match = string.match local gsub = strin
在学习第三方的Lua代码时,我发现在主脚本文件的顶部 local insert = table.insert local match = string.match local gsub = strin
我目前正在学习 Python,并开始了一个项目,为 2000-2005 年 MLB 摊牌纸牌游戏创建棒球模拟游戏。这些程序包含棒球比赛的事件,作为单独代码段中间的打印语句(“Jeff 击中单打”,“B
我的问题:在没有多余括号的情况下漂亮地打印表达式的最干净的方法是什么? 我有以下 lambda 表达式的表示: Term ::= Fun(String x, Term t) | App(
为了在 Julia 中创建可打印的新类型,应该定义哪些方法?我认为应该只定义 show,然后它将引发其他函数的行为,例如: 打印 字符串 repl_show 显示紧凑 展示 需要为新类型定义以下哪些方
我有一个页面,用户可以在其中打印一些带有图像和数据的 pdf。我希望他们能够打印他们想要的文件数量,并且能够暂停它们——这意味着他们可以停止打印并防止打印尚未发送到打印机的文件;当然,已经发送到打印机
CLHS 说 An attempt to print a circular structure with *print-circle* set to nil may lead to looping
正如标题所示,在 Pycharm 中使用自动完成功能时,显示的唯一自动完成选项是:print(args,kwargs) 内置 我希望自动完成功能以“print”完成,因为这是我通常使用的。我正在使用
是否有可能使用 fmt.Println("...") 打印一个 shell 居中对齐的字符串? 最佳答案 作为对这个长期回答问题的更新,可以通过使用 fmt 包中的 * 符号来改进@miltonb 发
我想在控制台屏幕上显示使用 DO 循环完成的计算进度。我可以像这样将进度变量打印到终端: PROGRAM TextOverWrite_WithLoop IMPLICIT NONE INTEGER ::
我正在尝试为我的新对象定义打印方法,并使用传递给 print 的对象名称。使用 deparse(substitute(y)) .这可以完美地使用 print功能明确: obj function (x
我需要安装 dompdf 方面的帮助。我应该将解压的 zip 文件放在目录中的哪个位置?我按照 INSTALL.txt 进行操作,它显示“将下载的包的内容提取到支持的路径之一”。这是否意味着放入“Mo
我的应用程序中有一个 webkit 小部件,您可以打印它。打印效果很好,除了打印时没有图像,即使屏幕上有图像。 打印代码如下: void MainWindow::printPage() { Q
我是一名优秀的程序员,十分优秀!