#runtime "hsp3cl"
#module
#defcfunc spaces int len
if len <= 0 : return ""
sdim s, len + 1
repeat len
poke s, cnt, ' '
loop
return s
#defcfunc centered_text str target, int len
if len <= 0 : return ""
target_length = strlen(target)
result = target
if target_length < len {
result = spaces((len - target_length)/2) + target + spaces((len - target_length + 1)/2)
} else : if target_length > len {
result = strmid(result, (target_length - len)/2, len)
}
return result
#global
s = "*"
repeat 10
mes centered_text(s, 15)
s += " *"
loop
stop
eller
#6102()
[
HSP
]
Rating0/0=0.00
対象文字列の長さによって分岐しています。 露骨すぎてスマートとは言えないでしょう。
#runtime "hsp3cl" #module #defcfunc spaces int len if len <= 0 : return "" sdim s, len + 1 repeat len poke s, cnt, ' ' loop return s #defcfunc centered_text str target, int len if len <= 0 : return "" target_length = strlen(target) result = target if target_length < len { result = spaces((len - target_length)/2) + target + spaces((len - target_length + 1)/2) } else : if target_length > len { result = strmid(result, (target_length - len)/2, len) } return result #global s = "*" repeat 10 mes centered_text(s, 15) s += " *" loop stopRating0/0=0.00-0+
1 reply [ reply ]