2015-01-19 21:30 GMT+01:00 Stanislav Horáček <stanislav.hora...@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+unsubscr...@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