Comment detail
文字列のセンタリング (Nested Flatten)より単純なスクリプトです。 まず指定された長さの半角スペース列を用意し、次に文字列をpokeで書きこんでいます。
1 2 3 4 5 6 7 8 9 10 11 | #module
#defcfunc centered_text str _source, int len
if len <= 0 : return ""
source = _source
source_strlen = strlen(source)
sdim result, len + 1
memset result, ' ', len
poke result, limit((len - source_strlen)/2, 0, len/2), strmid(source, limit((source_strlen - len)/2, 0, source_strlen), len)
return result
#global
|




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 ]