格式化字符串

Lua中string.format转义符的使用 虽然lua中字符串拼接”string.format“相对于”..“消耗较大,但有时为了代码的可读性,项目中还是经常用到”string.format“。至于这两个用法的性能看源码也很容易看出来,这里就简单说一下,前者其实调用C函数str_format来实现拼接的,而后者只是一个操作符,通过memcpy来拼接,并且多个”..“的操作其实也只执行了一次concat。 对于”string.for 阅读详情

格式化字符串

格式化函数

string.format用来格式化字符串(按指定的规则连接字符串或输出其他变量并返回新的字符串) 。
使用方法与C语言的printf函数相同(实际上很多编程语言中都有同样的格式化函数).

str = string.format(fm,...);
第一个参数用fm表示输出的格式,每个%符号后面是一个格式化表达式,每个格式化表达式按顺序对应后面的参数。
所以用了N个格式化表达式,就必须在后面添加N个参数。

下面是一个简单的例子:

int = 123;
str = "字符串"

//下面的%s对应参数str, %i对应参数int
str = string.format("这是字符串:'%s' 这是数字值 %i",str,int);

io.open()
io.print(str);

//%05i表示格式化为至少五位的数字,不足在前面补0
str = string.format("%05i",int);
io.print(str);

格式化语法

格式化表达式:

%[零个或多个标志][最小字段宽度][精度][修改符]格式码

注意:[]方括号表示可选参数

1、格式码

代码参数含义
c数字值(number)参数被裁剪为8位字节码并作为字符进行打印。
i,d数字值(number)参数作为一个十进制整数打印。如果给出了精度而且值的位数小于精度位数,前面就用0填充。
u,o,x,X数字值(number)参数作为一个无符号数字值打印,u使用十进制,o使用八进制,x或X使用十六进制,两者的区别是x约定使用abcdef,而X约定使用ABCDEF。
e,E数字值(number)参数根据指数形式打印。例如,6.023000e23是使用代码e,6.023000E23是使用代码E。小数点后面的位数由精度字段决定,缺省值是6。
f数字值(number)参数按照的常规浮点格式打印。精度字段决定小数点后面的位数,缺省值是6。
g,G数字值(number)参数以%f或%e(如G则%E)的格式打印,取决于它的值。如果指数大于等于-4但小于精度字段就使用%f格式,否则使用指数格式。
s字符串值(string)打印一个字符串。
q(无)打印一个字符串,并将字符串置于一对引号中,如果字符串中包含引号换行等自动添加转义符。如果要读取一个字符串传为代码。为避免用户恶意注入引号等特殊字符,可以使用%q进行格式化。
%(无)取消%转义打印一个%字符,即用%%表示本来的%。

2、 标志

标志含义
-值在字段中做对齐,缺省情况下是右对齐。
0当数值为右对齐时,缺省情况下是使用空格填充值左边未使用的列。这个标志表示用零填充,它可用于d,i,u,o,x,X,e,E,f,g和G代码。使用d,i,u,o,x和X代码时,如果给出了精度字段,零标志就被忽略。如果格式代码中出现了负号,零标志也没有效果。
+当用于一个格式化某个有符号值代码时,如果值非负,正号标志就会给它加上一个正号。如果该值为负,就像往常一样显示一个负号。在缺省情况下,正号并不会显示。
空格只用于转换有符号值的代码。当值非负时,这个标志把一个空格添加到它开始的位置。注意这个标志和正号标志是相互排斥的,如果两个同时给出,空格标志便被忽略。
#选择某些代码的另一种转换形式:

用于... #标志...
o 保证产生的值以一个零开头
x,X 在非零值前面加0x前缀(%X则为0X)
e,E,f 确保结果始终包含一个小数点,即使它后面没有数字
g,G 和上面的e,E和f代码相同。另外,缀尾的0并不从小数中去除

3、 字段宽度

字段宽度是一个十进制整数,用于指定将出现在结果中的最小字符数。如果值的字符数少于字段宽度,就对它进行填充以增加长度。

4、 精度

精度以一个句点开头,后面跟一个可选的十进制数。如果未给出整数,精度的缺省值为零。

对于d,i,u,o,x和X类型的转换,精度字段指定将出现在结果中的最小的数字个数并覆盖零标志。如果转换后的值的位数小于宽度,就在它的前面插入零。如果值为零且精度也为零,则转换结果就不会产生数字。

对于e,E和f类型的转换,精度决定将出现在小数点之后的数字位数。

对于g和G类型的转换,它指定将出现在结果中的最大有效位数。

当使用s类型的转换时,精度指定将被转换的最多的字符数。

如果用于表示字段宽度和/或精度的十进制整数由一个星号代替,那么string.format的下一个参数(必须是个整数)就提供宽度和(或)精度。因此,
这些值可以通过计算获得而不必预先指定。

5、格式语法示例

格式代码AABCABCDEFGH
%sAABCABCDEFGH
%5s####A##ABCABCDEFGH
%.5sAABCABCDE
%5.5s####A##ABCABCDE
%-5sA####ABC##ABCDEFGH
格式代码1-1212345123456789
%d1-1212345123456789
%6d#####1###-12#12345123456789
%.4d0001-001212345123456789
%6.4d##0001#-0012#12345123456789
%-4d1####-12#12345123456789
%04d0001-01212345123456789
%+d+1-12+12345+123456789
格式代码1.01.0001234512345.6789
%f1.0000000.0100000.00012312345.678900
%10.2f######1.00#####0.01######0.00##12345.67
%e1.000000e+001.000000e-021.234500e-041.234568e+04
%.4e1.0000e+001.0000e-021.2345e-041.2346e+04
%g10.010.0001234512345.7
格式代码6.023e23
%f60229999999999975882752.000000
%10.2f60229999999999975882752.00
%e6.023000e+23
%.4e6.0230e+23
%g6.023e+23

用上面的格式化函数可以轻松实现数字的进制转换( 请参考:数值与进制)

io.open()

//数字转换为二进制字符串
str = string.format("%b",23 );
io.print(str)

//二进制字符串转换为数字
n = tonumber(str,2)

//数字转换为八进制字符串
str = string.format("%o",23 );
io.print(str)

//八进制字符串转换为数字
n = tonumber(str,8)

//数字转换为十六进制字符串
str = string.format("%x",23 );
io.print(str)

//十六进制字符串转换为数字
n = tonumber(str,16)
C# 字符串格式化 也就是说,若要单独使用自定义格式说明符“d”、“f”、“F”、“h”、“m”、“s”、“t”、“y”、“z”、“H”或“M”,请指定“%d”、“%f”、“%F”、“%h”、“%m”、“%s”、“%t”、“%y”、“%z”、“%H”或“%M”。如果“E”、“E+”、“E-”、“e”、“e+”或“e-”中的任何一个字符串出现在格式字符串中,而且后面紧跟至少一个“0”字符,则数字用科学记数法来格式化,在数字和指数之间插入“E”或“e”。“E”、“E-”、“e”或“e-”格式指示符号字符仅置于负指数前面。 阅读详情

相关推荐

[格式化字符串]

在C语言中,格式化字符串是用来指定如何显示变量值的一种方式。最常见的函数是printf,它根据传入的第一个参数(即格式化字符串)来决定如何显示后面的参数%d。

GUANGUANMAO1的博客 1074

Lua string.format用法

lua中有很多字符串操作的函数,string.format()就是其中的一个,顾名思义,format是格式化的意思,则string.format()功能就是格式化一个字符串。     我们知道lua中可以用".."连接字符串,可以起到一部分格式化字符串的作用,但是如果字符串较长或者有特殊的格式转换操作(如十六进制转换),用".."就会很繁琐且可读性差。用string.format()就是一个很好

写作帮助思考 11万+

新手避坑指南:用SARScape 5.6.2处理Sentinel-1数据做SBAS-InSAR,这些参数设置错了白忙活

本文详细介绍了使用SARScape 5.6.2处理Sentinel-1数据做SBAS-InSAR时的关键参数设置技巧,帮助新手避免常见错误。重点解析了连接图生成、干涉工作流、DEM处理等环节的12个关键参数,包括Max Normal Baseline、Unwrapping Coherence Threshold等,提供实测安全值范围和优化建议,确保处理效率和结果准确性。

weixin_30694389的博客 557

lua字符串库

资料摘选自 字符串库 string.len(s)       --返回字符串s的长度 string.rep(s,n)     --返回重复n次字符串s的串 string.lower(s)     --将s中的大写字母转换成小写 string.upper(s)     --将s中的小写字母转换成大写 string.sub(s,i,j)   --函数截取字符串s的从第i字符到第j字符之间的

afei198409的专栏 902

Bugku中的source

进入环境后 我们首先查看源码可以得到一个flag 这肯定是个假的(已经提交过了确实是个假的) 题目提示要用Linux 这里使用的是kali 我们首先dirsearch一下这个网站 可以看到有.git文件泄露 也可以点开那个链接但是在里面没有找到flag 然后选择下载这个.git文件 然后进入这个文件夹 输入git reflog查看文件状态 可以看到有四个都有flag is here 一个一个查看git show 然后在40c6d51中发现了我们需要的fl

A272036149的博客 1012

从原理图到PCB:Cadence Allegro 17.4网表同步全流程详解(含第三方网表配置)

本文详细解析了Cadence Allegro 17.4中从Orcad原理图到PCB布局的网表同步全流程。核心内容包括标准的第一方网表同步步骤,以及针对第三方网表导入时关键的封装库路径配置方法,并提供了常见同步错误的排查思路,帮助工程师高效、准确地完成设计数据传递,确保PCB设计顺利开局。

salt9的博客 655

Lua string.format() 使用整理

在使用 Lua 进行实际开发的过程中,格式化字符串的函数 string.format() 的使用频率是非常高的,这里整理一下关于这个函数的使用。 string.format(formatstring, ···) formatstring 为格式化串(必须是一个字符串),其中可能包含多个转义码(例如最为常用的 %d %s 等)。 ... 为数量不定的参数列表,以逗号分隔,与格式化串中的转义码一一对应。 e.g. print(string.format("%s Have %d Olympic Gold Med

fightsyj的博客 9085

QGroundControl实现多机控制

前言 作为西安电子科技大学的本科生一名,目前在研究关于无人机导航规划与轨迹控制方面。 目前在跟导师做关于雷达无人机的一个项目,在这里记录一下关于QGC地面站实现多机控制的一些方法。 某些地方写的可能不是很完善,欢迎大家补充。 目前该文章还未写完,后期本人会继续编写 多机控制原理 多机地面站支持TCP,UDP和串口等三种连接方式,首先我们需要对这两种连接方式抽象出一个基类LinkInterface,提供两个虚函数分别对应于数据接受和发送处理,针对于不同的连接方式实现TCP,UDP和串口连接相对应的子类TCPL

Phillweston的博客 8430

Lua 字符串

字符串或串(String)是由数字、字母、下划线组成的一串字符。在 Lua 中,字符串是一种基本的数据类型,用于存储文本数据。Lua 中的字符串可以包含任意字符,包括字母、数字、符号、空格以及其他特殊字符。Lua 语言中字符串可以使用以下三种方式来表示:单引号间的一串字符。双引号间的一串字符。" -- 创建一个新的字符串并将其赋值给strprint(str) -- 输出 "Hello, World!与间的一串字符。]]

chenjiniu的博客 3519

PCB过孔全介绍

过孔(via)是多层PCB的重要组成部分之一,钻孔的费用通常占PCB制板费用的30%到40%。简单的说来,PCB上的每一个孔都可以称之为过孔。从作用上看,过孔可以分成两类:一是用作各层间的电气连接;二是用作器件的固定或定位。如果从工艺制程上来说,这些过孔一般又分为三类,即盲孔(blind via)、埋孔(buried via)和通孔(through via)。盲孔位于印刷线路板的顶层和底层表面,具

小王的自我修行路 2357

PyTorch实战:3D U-Net医学图像分割从零搭建(附完整代码)

本文详细介绍了如何使用PyTorch从零搭建3D U-Net模型进行医学图像分割,涵盖三维卷积实现、模块化架构设计、医学图像专属优化策略及完整训练流程。通过实战代码演示,帮助开发者掌握UNet-3D在CT、MRI等三维医学图像分割中的应用,提升肝脏肿瘤分割、肺结节检测等任务的准确性。

weixin_29061997的博客 330

python字符串格式化

对于字符串格式化的常见三种方式

ex_6450的博客 3万+

广义S变换在MATLAB中的仿真

广义S变换是对信号进行时频分析的一种方法,它基于短时傅里叶变换(Short-Time Fourier Transform,STFT)和小波变换(Wavelet Transform)。广义S变换将信号分解成时频平面上的一系列矩形框,每个框内的数值表示相应时刻和频率下信号的能量。本文将介绍如何使用MATLAB进行广义S变换的仿真,并提供相应的源代码。函数,我们可以方便地计算信号的广义S变换,并获取时频平面上的时域和频域信息。广义S变换在信号处理和相关领域中具有广泛的应用,可以用于分析和处理各种类型的信号。

CodeNexus的博客 1119

C# 字符串格式化_C# 字符串格式化整理

一、C# 字符串格式化_C# 字符串格式化整理 使用方式1: xxx.ToString(xxxx) 使用方式2:string.Format(xxxx,xxx) 1、占位符格式化 零占位符:固定位数,不足补充0 数字占位符:最小化数字展示,“##”格式字符串使得值被舍入到小数点前最近的数字,其中零总被舍去。 空格占位符 string.Format("{0,-50}", theObj);//格式化成50个字符,原字符左对齐,不足则补空格 string.Format("{0,50}", theO..

天马3798 2万+

启动launch文件时显示找不到franka_ign_ros2_control-system...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 695

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【python】之字符串格式化

python字符串的格式化(建议初学者收藏)

m0_67388084的博客 3536

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

字符串的格式化方法

最通用、灵活的方法,适合各种数据类型的格式化。:用于格式化输出到控制台,语法与类似。:适用于国际化场景,可以处理复杂的格式化需求。和:用于高效地拼接字符串,适合在循环中构建字符串。:用于将数组或集合中的字符串拼接成一个字符串,常用于列表或数组输出。

Flying_Fish_roe的博客 2749

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LABVIEW格式化字符串

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

superleexue的博客 1万+

C 格式化字符串

格式字符串的形式为: % [输出最小宽度] [.精度] [长度] 类型 例如,%d格式符表示 用十进制整形格式输出。%f表示用实型格式输出,%5.2f 格式表示输出宽度为5(包括小数点),并包含2位小数。 函数概要: printf 函数用于打印格式化字符串到标准输出流。 函数原型: #include <stdio.h> ... int printf ( const char * format, ... ); 参数解析: format 参数 format 参数是一个格式化字符串,由格式化占位

bob的博客 3076

7.3 字符串格式化

这部分是此次格式转换脚本的核心,很有可能bug就在这里了。

tang7mj的博客 1306

Python字符串相加以及字符串格式化

1、在Python中字符串a占用一块内存地址,字符串b也占用一块内存地址,当字符串a+b时,又会在内存空间中开辟一块新的地址用来存放a+b。 a 地址一 b 地址二 a+b 地址三 因此内存中就占了三份空间,对内存消耗是很大的因此尽量使用字符串格式化来进行字符拼接。 2、字符串格式化 a、常见的占位符 %d:整数 %f:浮点数 %s:字符串 %x:十六进制整数 b、其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数: print('%2d-%02d'%(3,1)):'3-01' print

python学习者的博客 1644

golang 格式化字符串_如何在Go中格式化字符串

golang 格式化字符串As strings are often made up of written text, there are many instances when we may want to have greater control over how strings look to make them more readable for humans through punctua...

2801

python 字符串格式化变量_Python之format字符串格式化

1.字符串连接>>> a = 'My name is ' + 'Suen'>>> a'My name is Suen'>>> a = 'My name is %s'%'Suen'>>> a'My name is Suen'>>> a = 'My name is %s, Age:%d'%('Suen', 18)...

weixin_34673225的博客 381

格式化字符串%s

//1 x ='there are %d types of people.'%10 binary ='binary' do_not = "don't" y = 'those who knows %s and those who %s.'%(binary,do_not) print (x) print (y)

viphbk的博客 1991
上一篇: aadio读写ini文件
下一篇: 直接使用备份文件生成新的数据库
ribut9225
博客等级 码龄22年 113粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值