RosettaCodeData/Task/Substring/M2000-Interpreter/substring.m2000

48 lines
1.5 KiB
Plaintext

Module CheckAnsi {
\\ ANSI STRING
Locale 1033
\\ convert UTF16-LE to ANSI 8bit
s$ =Str$("ABCDEFG")
Print Len(s$)=3.5 ' 3.5 words, means 7 bytes (3.5*2)
AnsiLen=Len(s$)*2
' From 4th byte get 3 bytes
n=4
m=3
substring$=Mid$(s$, n, m as byte)
substring2End$=Mid$(s$, n , AnsiLen as byte)
substringMinusOne$=Left$(s$, AnsiLen-1 as byte)
substringFromKnownCharacter$=Mid$(s$, Instr(s$, str$("B") as byte) , m as byte)
substringFromKnownSubstring$=Mid$(s$, Instr(s$, str$("BC") as byte) , m as byte)
Print Len(substring$)*2=m
\\ convert to UTF-16LE
Print Chr$(substring$)="DEF"
Print Chr$(substring2End$)="DEFG"
Print Chr$(substringMinusOne$)="ABCDEF"
Print Chr$(substringFromKnownCharacter$)="BCD"
Print Chr$(substringFromKnownSubstring$)="BCD"
}
CheckAnsi
Module CheckUTF16LE {
s$ ="ABCDEFG"
Print Len(s$)=7
Utf16Len=Len(s$)
' From 4th byte get 3 bytes
n=4
m=3
substring$=Mid$(s$, n, m)
substring2End$=Mid$(s$, n , Utf16Len)
substringMinusOne$=Left$(s$, Utf16Len-1)
substringFromKnownCharacter$=Mid$(s$, Instr(s$, "B") , m)
substringFromKnownSubstring$=Mid$(s$, Instr(s$, "BC") , m)
Print Len(substring$)=m
\\ convert to UTF-16LE
Print substring$="DEF"
Print substring2End$="DEFG"
Print substringMinusOne$="ABCDEF"
Print substringFromKnownCharacter$="BCD"
Print substringFromKnownSubstring$="BCD"
}
CheckUTF16LE