文字列のセンタリング
Posted feedbacks - Batchfile
バッチで書いてみました。文字列が半角空白を含まない場合は、引数をダブルクォーテー
ションで括る必要はありません。なお、18行目と20行目の行末に半角空白が 1つあるので
注意してください。
e.g.
C:\>@echo off & (for /l %i in (0,1,7) do center "abcde" %i) & @echo on
[]
[c]
[bc]
[bcd]
[abcd]
[abcde]
[abcde ]
[ abcde ]
遅延環境変数展開を利用しているので、Windows NTでは動作しません。Windows 2000, XP,
2003で動作を確認。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | :: center.bat
@echo off
setlocal enabledelayedexpansion
set l=0
set m=0
set n=0
set t=%1
set t=%t:"=%
call :length "%t%" l
if %2 gtr %l% (
set /a m=%2-%l%
set /a n=!m!/2
:: パディング
for /l %%i in (1,1,!n!) do set t= !t!
for /l %%i in (1,1,!n!) do set t=!t!
set /a n=!m!%%2
if !n! equ 1 set t=!t!
)
if %l% gtr %2 (
set /a m=%l%-%2
set /a n=!m!/2
:: トリミング
for /l %%i in (1,1,!n!) do set t=!t:~1!
for /l %%i in (1,1,!n!) do set t=!t:~0,-1!
set /a n=!m!%%2
if !n! equ 1 set t=!t:~0,-1!
)
endlocal & echo [%t%]
goto :EOF
:length
setlocal
set i=0
set t=%1
set t=%t:"=%
:loop
set t=%t:~1%
set /a i+=1
if not "%t%" == "" goto loop
endlocal & set %2=%i%
goto :EOF
|



nobsun
#4089()
Rating0/2=0.00
文字列を指定のカラム幅にセンタリング配置する関数を示してください。文字列の長さが指定した幅より長い場合には文字列の両端をできるだけ均等に切り落して指定幅に収めてください。1文字は1カラムに収まるものと仮定してかまいません。
[ reply ]