adjustl把字符内容左移并在右侧补空格。adjustr把内容右移并在左侧补空格。都保持原字符值的长度和kind。
适合用于整理定宽表格、数值文本和文件字段的场景。只调整首尾空格分布的情况,不改变字符内部的空格。
语法结构
leftAligned = adjustl(text)
rightAligned = adjustr(text)
- adjustl移除开头连续空格,并在末尾补入相同数量的空格。
- adjustr移除末尾连续空格,并在开头补入相同数量的空格。
- 返回值与实参长度相同;函数不会直接修改实参,除非把结果重新赋回变量。
本文代码
! 在固定宽度字段内左右对齐测量值文本。
program characterAlignmentDemo
implicit none
character(len=12) :: field
field = " 42.7"
write (*, "(A,A,A)") "原字段: |", field, "|"
write (*, "(A,A,A)") "左对齐: |", adjustl(field), "|"
write (*, "(A,A,A)") "右对齐: |", adjustr(field), "|"
print "(A,I0)", "对齐后长度仍为:", len(adjustl(field))
end program characterAlignmentDemo
编译运行
(base) hong@hongdeMacBook-Pro 058.characterAlignment % gfortran -Wall -Wextra -std=f2018 exampleCharacterAlignment.f90 -o characterAlignmentDemo
(base) hong@hongdeMacBook-Pro 058.characterAlignment % ./characterAlignmentDemo
原字段: | 42.7 |
左对齐: |42.7 |
右对齐: | 42.7|
对齐后长度仍为:12
现象分析
field共有12个位置。初始内容:3个前空格;4个可见字符42.7;5个尾空格。
adjustl把3个前空格移到尾部。结果为:42.7、8个空格。
adjustr把5个尾部空格移到前面。结果为:8个空格、42.7。
两次对齐都返回长度12的字符值,因此len(adjustl(field))仍为12。对齐只改变了空格位置,为改变字段宽度。
核心知识点
- adjustl左对齐,adjustr右对齐。
- 两者保持字符长度和kind不变。
- 函数返回新字符值,不会自动改写原变量。
- 内部空格不会被删除或重新排列。