固定字符串长度,不足补空格

字符串填充技巧
本文介绍了使用C#和SQL实现字符串左右两侧填充特定字符直至达到指定长度的方法。C#中使用PadLeft方法,在SQL中则利用space或replicate函数完成。这些技巧在实际编程中非常实用。

C#

 

在字串左(或右)加空格或指定char字符,使字串达到指定长度,如:
<%
string str1="中国人";
str1=str1.PadLeft(10,'1'); //无第二参数为加空格
Response.Write(str1); //结果为“1111111中国人” , 字串长为10
%>

 

 

sql

 

方法1:

 

declare
 @a nvarchar(50),
 @b nvarchar(50)
set @a = 'abcasdf'
set @b = 'ab'
select @a + space(20 - len(@a))
select @b + space(20 - len(@b))

 

注:space ( 参数>=0 ),           补的空格数, 不能超过字符数,下同

 

 

方法2:

 


declare
 @aa nvarchar(200)
set @aa = 'sgawe'

select @aa + replicate(' ', 40 - datalength(@aa))

 

 

要将字符串**不足定长度的部分在右侧空格**,使其达到固定长度,可以使用 Python 的字符串格式化方法。这种操作常用于对齐文本、生成报表或构造固定宽度的输出。 --- ### ✅ 方法:使用 `str.ljust(width)` 或格式化语法 ```python s = "hello" width = 10 padded = s.ljust(width) # 右侧空格到总长为 10 print(f"'{padded}'") # 输出: 'hello ' ``` > `'hello'.ljust(10)` → `'hello '`(右边加了 5 个空格) --- ### 🧩 应用于二维字符矩阵:每行每个元素右空格 ```python # 二维字符矩阵 matrix = [ ['a', 'bb', 'c'], ['dd', 'e', 'fff'], ['g', 'hh', 'ii'] ] # 指定每个字段最小宽度 width = 5 # 格式化每一行,每个元素右侧空格,然后拼接 formatted_lines = [] for row in matrix: line = ''.join(elem.ljust(width) for elem in row) formatted_lines.append(line) # 打印结果 for line in formatted_lines: print(f"'{line}'") ``` #### 输出: ``` 'a bb c ' 'dd e fff ' 'g hh ii ' ``` > ✅ 所有字符串都**至少宽 `width`**,不足部分在右侧空格 --- ### ✅ 更简洁写法(列表推导式) ```python formatted_lines = [ ''.join(elem.ljust(width) for elem in row) for row in matrix ] ``` --- ### 🔁 其他等价写法(使用格式化) 你也可以用 `format` 或 f-string 实现相同效果: ```python # 等价于 .ljust(width) f"{elem:<{width}}" # 左对齐,右侧空格 ``` 所以完整版本也可以写成: ```python formatted_lines = [ ''.join(f"{elem:<{width}}" for elem in row) for row in matrix ] ``` > ✅ 效果完全一样,更灵活(支持填充字符等高级功能) --- ### 💡 提示:如果希望所有列独立控制宽度? 比如根据每列中最长元素自动设置该列宽度,可参考以下扩展逻辑: ```python # 自动计算每列所需宽度 col_widths = [ max(len(row[i]) for row in matrix if i < len(row)) for i in range(max(len(row) for row in matrix)) ] # 按列宽格式化 formatted_lines = [] for row in matrix: line = ''.join(elem.ljust(col_widths[i] + 2) for i, elem in enumerate(row)) formatted_lines.append(line) ``` 这样能实现更智能的对齐。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值