Date: prev next · Thread: first prev next last
2015 Archives by date, by thread · List index


2015-01-19 21:30 GMT+01:00 Stanislav Horáček <stanislav.horacek@gmail.com>:

Hi,

I agree that these examples are really useful. Could you provide also some
examples for the other functions dealing with DBCS (LEFTB, RIGHTB, LENB)?
If so, I will add them to the Help text.


Hi Stanislav and others,

Here are my suggestions for examples for MIDB, LEFTB, RIGHTB and LENB.

I actually made a spreadsheet in LibreOffice Calc and tested each
expression to be absolutely sure of the results. The spreadsheet I made can
be found at [1]. I made it using the English (US) user interface and locale.

[1]: http://www49.zippyshare.com/v/YbkWBbkZ/file.html

It turned out that invalid requests (half DBCS characters) actually do
*not* result in empty strings but rather in a *space character*.

Therefore these suggested examples and explanations.

The return values are the *actual* return values using the actual mentioned
expressions and were therefore *not* typed by hand (check the spreadsheet
if you want to see how). Note the rather subtle spaces returned.

MIDB("中国",1,0) returns "" (0 bytes is always an empty string).MIDB("中国",1,1)
returns " " (1 byte is only half a DBCS character and therefore the result
is a space character).MIDB("中国",1,2) returns "中" (2 bytes constitute one
complete DBCS character).MIDB("中国",1,3) returns "中 " (3 bytes constitute
one and a half DBCS character; the last byte results in a space
character).MIDB("中国",1,4)
returns "中国" (4 bytes constitute two complete DBCS characters).MIDB("中国",2,1)
returns " " (byte position 2 is not at the beginning of a character in a
DBCS string; 1 space character is returned).MIDB("中国",2,2) returns " "
(byte position 2 points to the last half of the first character in the DBCS
string; the 2 bytes asked for therefore constitutes the last half of the
first character and the first half of the second character in the string; 2
space characters are therefore returned).MIDB("中国",2,3) returns " 国" (byte
position 2 is not at the beginning of a character in a DBCS string; a space
character is returned for byte position 2).MIDB("中国",3,1) returns " " (byte
position 3 is at the beginning of a character in a DBCS string, but 1 byte
is only half a DBCS character and a space character is therefore returned
instead).MIDB("中国",3,2) returns "国" (byte position 3 is at the beginning of
a character in a DBCS string, and 2 bytes constitute one DBCS
character).MIDB("office",2,3)
returns "ffi" (byte position 2 is at the beginning of a character in a
non-DBCS string, and 3 bytes of a non-DBCS string constitute 3 characters).
LEFTB("中国",1) returns " " (1 byte is only half a DBCS character and a space
character is returned instead).LEFTB("中国",2) returns "中" (2 bytes
constitute one complete DBCS character).LEFTB("中国",3) returns "中 " (3 bytes
constitute one DBCS character and a half; the last character returned is
therefore a space character).LEFTB("中国",4) returns "中国" (4 bytes constitute
two complete DBCS characters).LEFTB("office",3) returns "off" (3 non-DBCS
characters each consisting of 1 byte).
RIGHTB("中国",1) returns " " (1 byte is only half a DBCS character and a
space character is returned instead).RIGHTB("中国",2) returns "国" (2 bytes
constitute one complete DBCS character).RIGHTB("中国",3) returns " 国" (3
bytes constitute one half DBCS character and one whole DBCS character; a
space is returned for the first half).RIGHTB("中国",4) returns "中国" (4 bytes
constitute two complete DBCS characters).RIGHTB("office",3) returns "ice"
(3 non-DBCS characters each consisting of 1 byte).
LENB("中") returns "2" (1 DBCS character consisting of 2 bytes).LENB("中国")
returns "4" (2 DBCS characters each consisting of 2 bytes).LENB("office")
returns "6" (6 non-DBCS characters each consisting of 1 byte).


If anyone else is curious, "中国" means China in Chinese – according to
Google Translate :-).


Jesper

-- 
To unsubscribe e-mail to: l10n+unsubscribe@global.libreoffice.org
Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/global/l10n/
All messages sent to this list will be publicly archived and cannot be deleted

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.