格式化通用容器
五月床 来源 #
将Maybe值呈现为默认值(如果为Nothing)或使用给定的格式化程序:
>>>
格式(可能是“再见”文本)没有
“再见”
>>>
格式(可能是“再见”文本)(只是“你好”)
“你好”
有选择权的::格式 建设者(a->建设者) ->格式第页(也许 吧a->r)来源 #
使用给定的格式化程序在Maybe中呈现值,或生成空字符串:
>>>
格式(可选文本)无
""
>>>
格式(可选文本)(仅“Hello”)
“你好”
在这里 来源 #
在“二者之一”中渲染值:
>>>
format(eithered text int)(左“错误!”
“错误!”
>>>
格式(eithered text int)(右69)
"69"
左撇子::格式 建设者(a->建设者) ->格式第页(要么a x->r)来源 #
使用给定的格式化程序在Left中呈现值,将Right呈现为空字符串:
>>>
格式(左文本)(左“bingo”)
“宾果”
>>>
格式(左文本)(右16)
""
扶正的::格式 建设者(a->建设者) ->格式第页(要么x a->r)来源 #
使用给定的格式化程序呈现Right中的值,将Left呈现为空字符串:
>>>
格式(右侧文本)(左侧16)
""
>>>
格式(右文本)(右“宾果”)
“宾果”
格式化数据列表
串联的::可折叠的t=>格式 建设者(a->建设者) ->格式r(t a->r)来源 #
设置列表中每个值的格式并将其全部串联:
>>>
格式(连接文本)[“一”、“二”、“三”]
“一二三”
>>>
格式(取15(串联箱))[1..]
"1101110010111011110001001101010111100110111101111"
加入::可折叠的t=>([文本] ->文本) ->格式 建设者(a->建设者) ->格式r(t a->r)来源 #
使用给定的text-join函数将列表中单独呈现的项连接在一起。
>>>
格式(joinedWith(mconcat.revese)int)[123456789]
"789456123"
插层的::可折叠的t=>文本->格式 建设者(a->建设者) ->格式r(t a->r)来源 #
设置列表中每个值的格式,并将给定字符串置于每个值之间:
>>>
fprintLn(插入“||”int)[1,2,3]
1||2||3
间隔::可折叠的t=>格式 建设者(a->建设者) ->格式r(t a->r)来源 #
用空格分隔折叠式(例如列表)的格式化项目:
>>>
格式(以int分隔)[1,2,3]
"1 2 3"
请注意,此行为与未装备的
,这只是一种不同的思考方式。
逗号步骤::可折叠的t=>格式 建设者(a->建设者) ->格式r(t a->r)来源 #
用逗号分隔可折叠(例如列表)的格式化项目:
>>>
格式(commaSep stext)[“一”、“二”、“三”、“四”、“五”]
“一、二、三、四、五”
>>>
格式(采用5(逗号步int))[1..]
"1,2,3,4,5"
列表::可折叠的t=>格式 建设者(a->建设者) ->格式r(t a->r)来源 #
在可折叠项周围添加方括号(例如列表),并用逗号和空格分隔每个格式化项。
>>>
格式(list-stext)[“一”、“二”、“三”]
“[一,二,三]”
>>>
格式(显示列表)[“一”、“二”、“三”]
“[”一“,”二“,”三“]”
拿::国际->格式r([a]->r)->格式r([a]->r)来源 #
只取项目列表中的前n个项目。
>>>
格式(取7(列表箱))[1..]
"[1, 10, 11, 100, 101, 110, 111]"
>>>
格式(列出箱子)(取7[1..])
"[1, 10, 11, 100, 101, 110, 111]"
下降::国际->格式r([a]->r)->格式r([a]->r)来源 #
从项目列表中删除前n个项目。
>>>
格式(删除了3(list int)[1..6]
"[4, 5, 6]"
拆分要传递给其他格式化程序的字符串
溅射 来源 #
将格式化项拆分到给定谓词匹配的位置,并使用给定的列表组合符呈现字符串的结果列表(这个函数是从一个平行的宇宙发送给我们的,在这个宇宙中splat是split的过去分词,例如“哎哟,我的裤子被splat了”)。
>>>
format(splat Data.Char.isSpace commaSpaceSep stext)“此\t格式不正确”
“此,,是,,格式很差,,”
splotWith(使用) 来源 #
用于获取文本分割函数并将其转换为格式组合符的实用程序。
>>>
格式(splatWith(TL.chunksOf 3)list int)1234567890
"[123, 456, 789, 0]"
splatOn(打开) 来源 #
在给定字符串的实例处拆分格式化项,并使用给定的列表组合符呈现字符串的结果列表。
>>>
fprint(splotOn“,”无衬里文本)“一,二,三”
一二三
>>>
fprint(splatOn“,”indentedLines文本)“一,二,三”
一二三
措辞的 来源 #
将格式化项拆分为单词,并使用给定的列表组合符呈现字符串的结果列表。
>>>
格式(文字列表文本)“一二三”
“[一,二,三]”
有内衬的 来源 #
将格式化项拆分为多行,并使用给定的列表组合符呈现字符串的结果列表。
>>>
fprintLn(lined qlist text)“one two three \n\nforour five 6\nseven捌玖\n\n”
[“一二三”,“”,“四五六”,“七八九”,“]
改变格式化字符串
更改为:: (文本->文本) ->格式r a->格式注册会计师来源 #
使用给定函数更改格式化字符串。
>>>
格式(使用Data.Text.Lazy.reverse int更改)123456
"654321"
字符保留If:: (烧焦->布尔) ->格式r a->格式注册会计师来源 #
筛选格式化字符串,使其仅包含传递给定谓词的字符:
>>>
格式(charsKeptIf Data.Char.isUpper文本)“Data.Char.isUpper”
“DCU”
删除的字符If:: (烧焦->布尔) ->格式r a->格式注册会计师来源 #
筛选格式化字符串,使其不包含传递给定谓词的字符:
>>>
格式(charsRemovedIf Data.Char.isUpper文本)“Data.Char.isUpper”
“ata.har.isper”
替换::文本->文本->格式r a->格式注册会计师来源 #
取一个格式化程序,将给定的针替换为其输出中的给定替换。
>>>
format(替换为“Bruce”“<redacted>”stext)“布鲁斯回答说,布鲁斯的名字实际上是‘<redacted>’。”
“<redacted>回答说,<redacted>的名字实际上是‘<redactd>’。”
大写的::格式r a->格式注册会计师来源 #
将给定格式化程序输出中的任何字母转换为大写字母。
>>>
格式(大写文本)“我不是在喊,你是在喊。”
“我不是在开枪,你是在开枪。”
下层的::格式r a->格式注册会计师来源 #
将给定格式化程序输出中的任何字母转换为小写。
>>>
格式(小写文本)“Cd SrC/;Rm-Rf*”
“cd src/;rm-rf*”
有标题的::格式r a->格式注册会计师来源 #
将格式化字符串转换为标题大小写或类似的内容:
>>>
格式(以标题为基础的字符串)“布莱恩的一生”
《布莱恩的一生》
超短的::国际64->格式r a->格式注册会计师来源 #
在末尾截断格式化字符串,使其长度不超过给定的字符数,并在末尾放置省略号,使其不超过此长度。
>>>
格式(截断5个文本)“hello”
“你好”
>>>
格式(截断5个文本)“您好”
“他……”
带ctruncated的::国际64->国际64->格式r a->格式注册会计师来源 #
截断中间的格式化字符串,在开始和结束处保留给定数量的字符,并在其间放置省略号。长度不得超过`start+end+3`个字符。
>>>
format(ctruncated 15 4 text)“敏捷的棕色狐狸跳过了懒狗。”
“那只敏捷的棕色……狗。”
>>>
格式(ctruncated 15 4 text)“The quick brown fox”
“敏捷的棕色狐狸”
rtruncated(已运行)::国际64->格式r a->格式注册会计师来源 #
在开头截断格式化字符串,使其长度不超过给定的字符数,在开头放置省略号,使其不超过此长度。
>>>
格式(rtrunated 5文本)“hello”
“你好”
>>>
格式(rtrunated 5文本)“您好”
“…os”
添加了lp::国际64->烧焦->格式r(a->r)->格式r(a->r)来源 #
用给定字符填充左侧的格式化字符串,使其具有给定的最小宽度:
>>>
格式(lpaded 7''int)1
" 1"
>>>
格式(lpadded 7''int)123456789
"123456789"
rp已添加::国际64->烧焦->格式r(a->r)->格式r(a->r)来源 #
用给定字符填充右侧的格式化字符串,使其具有给定的最小宽度:
>>>
格式(rpadded 7''int)1
"1 "
lfixed公司::国际64->烧焦->格式r(a->r)->格式r(a->r)来源 #
使用固定宽度设置项目的格式,在左侧填充给定字符以扩展,在右侧添加省略号以缩短:
>>>
格式(lfixed 10''int)123
"123 "
>>>
格式(lfix 10英寸int)1234567890
"1234567890"
>>>
格式(lfix 10英寸int)123456789012345
"1234567..."
固定的::国际64->烧焦->格式r(a->r)->格式r(a->r)来源 #
将项目设置为固定宽度,在右侧填充给定字符以扩展,在右侧添加省略号以缩短:
>>>
格式(rfixed 10''int)123
" 123"
>>>
格式(rfixed 10''int)1234567890
"1234567890"
>>>
格式(rfixed 10''int)123456789012345
"...9012345"
cfixed(固定)::国际64->国际64->烧焦->格式r(a->r)->格式r(a->r)来源 #
使用固定宽度设置项目的格式,两边填充给定字符以扩展,中间添加省略号以缩短。
总长度为`l+r+3`个字符。
>>>
格式(cfixed 4 3''int)123
" 123 "
>>>
格式(cfixed 4 3''int)1234567890
"1234567890"
>>>
格式(固定4 3英寸int)123456789012345
"1234...345"
换行格式化字符串
加了前缀::建设者->格式r a->格式注册会计师来源 #
将给定前缀添加到格式化项目:
>>>
format(“答案是:”%前缀“wait for it…”int)42
“答案是:等待……42”
>>>
fprint(无衬里(缩进4(前缀为“-”int))[1,2,3]
- 1- 2- 3
包围::建设者->格式r a->格式注册会计师来源 #
用给定字符串包围输出字符串:
>>>
格式(环绕“***”字符串)“glue”
“***胶水***”
随函附上的::建设者->建设者->格式r a->格式注册会计师来源 #
用给定字符串括起输出字符串:
>>>
format(包含“<!--”“-->”文本)“html注释”
“<!--html注释-->”
方形的::格式r a->格式注册会计师来源 #
在格式化项目周围添加单引号:
>>>
let obj=格式中的Just Nothing(“对象是:”%squoted shown%“。”)obj
“目标是:‘什么都没有’。”
d引用::格式r a->格式注册会计师来源 #
在格式化项目周围添加双引号:
>>>
fprintLn(“他说这是基于”%dquoted-stext%“)“科学”
他说这是基于“科学”。
带括号的::格式r a->格式注册会计师来源 #
在格式化项目周围添加括号:
>>>
格式(“我们发现”%括号int%“不符。”)17
“我们发现(17)处差异。”
>>>
fprintLn(取5(列表(括号内的int))[1..]
[(1), (2), (3), (4), (5)]
平方的::格式r a->格式注册会计师来源 #
在格式化项目周围添加方括号:
>>>
格式(平方整数)7
"[7]"
有支撑的::格式r a->格式注册会计师来源 #
在格式化项目周围添加花括号:
>>>
格式化(“\\begin”%括号文本)“节”
“\\开始{节}”
有角度的::格式r a->格式注册会计师来源 #
在格式化项目周围添加尖括号:
>>>
格式(带角度的int)7
"<7>"
>>>
格式(列表(倾斜文本))[“html”,“head”,“title”,“body”,“div”,“span”]
“[<html>,<head>,<title>,<body>,<div>,<span>]”
反勾选的::格式r a->格式注册会计师来源 #
在格式化项目周围添加反勾号:
>>>
format(“确保以root身份运行”%backticked-builder%“)“:(){:|:&};:”
“请确保以root身份运行`:(){:|:&};:`。”
更改缩进
缩进的::国际->格式r a->格式注册会计师来源 #
在渲染文本的开头插入给定数量的空格:
>>>
格式(缩进4 int)7
" 7"
注意,这只缩进多行字符串的第一行。要缩进所有行,请参见重新凹陷
.
缩进线条::可折叠的t=>国际->格式 建设者(a->建设者) ->格式r(t a->r)来源 #
设置项目列表的格式,每行放置一个,按给定的空格数缩进。
>>>
fprintLn(“幸运数字是:\n”%indentedLines 4 int)[7,13,1,42]
幸运数字是:713142
重新凹陷::国际->格式r a->格式注册会计师来源 #
按给定的空格数缩进格式化字符串的每一行:
>>>
fprint(重新缩进的2个文本)“一棵树”
一二三
数字适配器
舍入到:: (完整的我,RealFrac公司日期:,Functor函数f) =>f(i->r)->f(d->r)来源 #
取一个分数并四舍五入,然后将其格式化为给定格式:
>>>
格式(四舍五入到整数)6.66
"7">>>
format(list(roundedTo int))[10.66、6.66、1.0、3.4]
"[11, 7, 1, 3]"
注意:类型变量(f)
几乎总是“格式r”,因此可以将此函数的类型视为:
roundedTo::(积分i,RealFrac d)=>格式r(i->r)->格式r(d->r)
截断到:: (完整的我,RealFrac公司日期:,Functor函数f) =>f(i->r)->f(d->r)来源 #
取一个分数并将其截断,然后将其格式化为给定格式:
>>>
格式(truncatedTo int)6.66
"6">>>
格式(list(truncatedTo int))[10.66、6.66、1.0、3.4]
"[10, 6, 1, 3]"
注意:类型变量(f)
几乎总是“格式r”,因此可以将此函数的类型视为:
truncatedTo::(整数i,RealFrac d)=>格式r(i->r)->格式r(d->r)
天花板收件人:: (完整的我,RealFrac公司日期:,Functor函数f) =>f(i->r)->f(d->r)来源 #
取一个分数并将其设为上限,然后将其格式化为给定格式:
>>>
格式(ceilingedTo int)6.66
"7">>>
格式(list(ceilingedTo int))[10.66、6.66、1.0、3.4]
"[11, 7, 1, 4]"
注意:类型变量(f)
几乎总是“格式r”,因此可以将此函数的类型视为:
ceilingedTo::(积分i,RealFrac d)=>格式r(i->r)->格式r(d->r)
地板至:: (完整的我,RealFrac公司日期:,Functor函数f) =>f(i->r)->f(d->r)来源 #
取一个分数,在将其格式化为给定格式之前将其设置底数:
>>>
格式(flooredTo int)6.66
"6">>>
格式(list(flooredTo int))[10.66、6.66、1.0、3.4]
"[10, 6, 1, 3]"
注意:类型变量(f)
几乎总是“格式r”,因此可以将此函数的类型视为:
flooredTo::(积分i,RealFrac d)=>格式r(i->r)->格式r(d->r)
结构格式设置
已查看::((a->)施工a b)->s->施工a)->格式r(a->r)->格式r(s->r)来源 #
使用给定的镜头查看项目,并使用给定的格式化程序对其进行格式化。
您可以将其视为具有以下类型:
已查看
::透镜'
s a->格式r(a->r)->格式r(s->r)
>>>
格式(查看_1int)(1,“hello”)
"1"
当与Format的Monoid实例结合使用时,这很有用,因为它允许我们仅将数据结构作为参数给出一次,并使用格式化程序对其进行解构:
data Person=个人{_personName::文本,personAge::Int(_P)}makeLenses“人”我::个人me=人亚历克斯38format(“此人的名字是”%squoted(viewed personName text)%“,他们的年龄是”<>viewed person age int)me“此人的姓名是亚历克斯
,他们的年龄是38“
已访问::(s->a)->格式r(a->r)->格式r(s->r)来源 #
访问结构的元素并使用给定的格式化程序对其进行格式化。
>>>
format(访问的fst-int)(1,“hello”)
"1"
重复以下示例已查看
:
format(“此人的名字是”%squoted(accessed_personName text)%“,他们的年龄是”<>accessed_personAge int)me“此人的姓名是亚历克斯
,他们的年龄是38“
固定宽度数字格式
bin前缀::完整的a=>国际64->格式r(a->r)来源 #
使用带前导0b的二进制表示法呈现整数,并用零填充到给定宽度:
>>>
格式(binPrefix 16)4097
“0b00010000000000001”
十六进制前缀::完整的a=>国际64->格式r(a->r)来源 #
使用带前导0x的八进制表示法呈现整数,并用零填充到给定宽度:
>>>
格式(十六进制前缀16)4097
“0x0000000000001”