Written on: 30. 09. 2016 [12:52]
|
3dlogin
Илья Кузнецов
Topic creator
registered since: 06.04.2016
Posts: 12
|
Добрый день!
Был удивлён, когда "Тест".charAt(0) и "Тест"[0] не вернули "Т".
"Тест".length и проход по строке с использованием charCodeAt(i) конечно всё мне прояснили, однако в чём удобство такого поведения для пользователя OpenSCADA?
В конечном счёте пользователь может адаптировать код процедуры так, чтобы он соответствовал его ожиданиям, написать свои функции и пользовать их, однако мы же стремимся сделать OpenSCADA лучше и удобнее.
Предлагаю следующее:
для кода
testString = "Тест";
testStringLength = testString.length;
testCharAt0 = testString.charAt(0); // testString[0] сюда же
testStringArray = new Array();
for (i = 0; i < testStringLength; i++)
testStringArray.push(testString.charCodeAt(i));
вместо результата
testStringLength -> 8
testCharAt0 -> "" (код символа 208, в поле такого атрибута будет пусто)
testStringArray ->
<TArrayObj>
<int>208</int> // 0xD0
<int>162</int> // 0xA2
<int>208</int> // 0xD0
<int>181</int> // 0xB5
<int>209</int> // 0xD1
<int>129</int> // 0x81
<int>209</int> // 0xD1
<int>130</int> // 0x82
</TArrayObj>
получать
testStringLength -> 4
testCharAt0 -> "Т"
testStringArray ->
<TArrayObj>
<int>53410</int> // 0xD0A2 -- байты UTF-8 для номера символа "Т" U+0422
<int>53429</int> // 0xD0B5 -- байты UTF-8 для номера символа "е" U+0435
<int>53633</int> // 0xD181 -- байты UTF-8 для номера символа "с" U+0441
<int>53634</int> // 0xD182 -- байты UTF-8 для номера символа "т" U+0442
</TArrayObj>
или, что ещё логичнее, получать в charCodeAt(i) номер символа UTF-8, в который и Latin1 кстати входит:
testString = "Sи";
testStringArray = new Array();
for (i = 0; i < testString.length; i++)
testStringArray.push(testString.charCodeAt(i));
/*
<TArrayObj>
<int>83</int> // 0x53 -- номер символа "S" U+0053
<int>1080</int> // 0x438 -- номер символа "и" U+0438
</TArrayObj>
*/
Что думаете, товарищи разработчики?
|
Written on: 30. 09. 2016 [12:56]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"3dlogin" wrote:
Что думаете, товарищи разработчики?
Ничего не думаю поскольку меня всё устраивает!
Learn, learn and learn better than work, work and work.
|
Written on: 17. 12. 2018 [11:45]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"roman" wrote:
"3dlogin" wrote:
Что думаете, товарищи разработчики?
Ничего не думаю поскольку меня всё устраивает!
Расширил charCodeAt(), charAt() и добавил strFromCharUTF() для работы с UTF!
Learn, learn and learn better than work, work and work.
|