xxxxxxxxxx
import std.stdio;
import std.encoding;
void main()
{
string src;
// 1-Byte
writeln( "1-Byte:" );
src = "Abc";
foreach ( i, c; codePoints( src ) )
{
writeln( i, ": ", c );
}
// 2-Byte
writeln( "2-Byte:" );
src = "Жук";
foreach ( i, c; codePoints( src ) )
{
writeln( i, ": ", c );
}
// 3-Byte
writeln( "3-Byte:" );
src = "ᐅᐅᐅ";
foreach ( i, c; codePoints( src ) )
{
writeln( i, ": ", c );
}
// Reverse: 1-Byte
src = "Abc";
writeln( "Reverse 1-Byte:" );
foreach_reverse ( i, c; codePoints( src ) )
{
writeln( i, ": ", c );
}
// Reverse: 2-Byte
writeln( "Reverse 2-Byte:" );
src = "Жук";
foreach_reverse ( i, c; codePoints( src ) )
{
writeln( i, ": ", c );
}
// Reverse: 3-Byte
writeln( "Reverse 3-Byte:" );
src = "ᐅᐅᐅ";
foreach_reverse ( i, c; codePoints( src ) )
{
writeln( i, ": ", c );
}
// Get Prev Positions of last UTF8 Symbol
// 1-Byte
writeln( "Prev pos 1-Byte:" );
src = "Abc";
string sr = src;
size_t l = sr.lastSequence;
writeln( l );
// 2-Byte
writeln( "Prev pos 2-Byte:" );
src = "Жук";
sr = src;
l = sr.lastSequence;
writeln( l );
// 3-Byte
writeln( "Prev pos 3-Byte:" );
src = "ᐅᐅᐅ";
sr = src;
l = sr.lastSequence;
writeln( l );
writeln( sr );
// Get Next Positions in UTF8 string
// 1-Byte
writeln( "Next pos 1-Byte:" );
src = "Abc";
sr = src;
l = sr.index( 1 );
writeln( l );
// 2-Byte
writeln( "Next pos 2-Byte:" );
src = "Жук";
sr = src;
l = sr.index( 1 );
writeln( l );
// 3-Byte
writeln( "Next pos 3-Byte:" );
src = "ᐅᐅᐅ";
sr = src;
l = sr.index( 1 );
writeln( l );
writeln( sr );
// validLength 3-Byte
writeln( "validLength 3-Byte:" );
src = "Aᐅᐅᐅ";
writeln( src[ 0 .. 5 ].validLength() );
}