文字列の先端・終端またはその両方から指定した文字を取り除く、strtrim関数があります。
a="\\123"
aa = strtrim(a,1,'\\')
mes aa
Sucretさんのスクリプトを借りて、取り除くところまで含めて計測してみました。
#uselib "winmm.dll"
#cfunc timeGetTime "timeGetTime"
//strmidで判定してstrmidで抜き出す
time = timeGetTime()
repeat 1000000
a = "\\abcdefghijklmnopqrstuvwxyz"
if strmid(a,0,1)="\\"{
a=strmid(a,0,strlen(a)-1)
continue
}
await 0
loop
mes "strmid = " + ( timeGetTime() - time ) + "ミリ秒"
//peekで判定してstrmidで抜き出す
time = timeGetTime()
repeat 1000000
a = "\\abcdefghijklmnopqrstuvwxyz"
if peek(a,0)='\\'{
a=strmid(a,0,strlen(a)-1)
continue
}
await 0
loop
mes "peek = " + ( timeGetTime() - time ) + "ミリ秒"
//peekで判定してmemcpyで抜き出す
time = timeGetTime()
repeat 1000000
a = "\\abcdefghijklmnopqrstuvwxyz"
if peek(a,0)='\\'{
len=strlen(a)
memcpy a, a, len-1,0,1
poke a,len-1,0
continue
}
await 0
loop
mes "memcpy = " + ( timeGetTime() - time ) + "ミリ秒"
//strtrimで抜き出す
time = timeGetTime()
repeat 1000000
a = "\\abcdefghijklmnopqrstuvwxyz"
a = strtrim(a,1,'\\')
await 0
loop
mes "strtrim= " + ( timeGetTime() - time ) + "ミリ秒"
自分の環境では、strtrimが少し速かったです。
※一度投稿し直しました。