asciimat
Преобразует массив текста в коды ASCII/UTF8 и обратно
Синтаксис
unicodes = asciimat(text) text = asciimat(unicodes)
Аргументы
- text
- отдельный текст, или вектор, матрица или гиперматрица текстов.
Элементы текста могут иметь разную длину и могут включать в
себя расширенные символы UTF-8.
asciimat(…)
всегда конкатенирует столбцы текстаtext
вдоль строк, как входной или выходной аргумент. - unicodes
- отдельный целочисленный ASCII-код, вектор, матрица или гиперматрица 1-байтных чисел ASCII или юникода.
Описание
asciimat(…)
преобразует массив текста text
в массив соответствующих 1-байтных кодов ascii или UTF-8 unicodes
,
и наоборот.
asciimat(…)
является функцией совместимости с Octave/Matlab,
с целью обеспечить в преобразователе кода Matlab-в-Scilab m2sci
эквивалентность для суммирования и вычитания некоторых
строковых символов или с числами. Таким образом,
>> ['ab' 'c' ; 'd' 'ef'] + 4 ans = 101 102 103 104 105 106 >> ['ab';'cd'] + ['ef';'gh'] ans = 198 200 202 204 >> ['ab';'cd'] - ['ef';'gh'] ans = -4 -4 -4 -4
может быть преобразовано преобразователем Matlab-в-Scilab с
asciimat(['ab' 'c' ; 'd' 'ef']) + 4 asciimat(['ab';'cd']) + asciimat(['ef';'gh']) asciimat(['ab';'cd']) - asciimat(['ef';'gh'])
asciimat(…) не следует использовать без преобразователя. |
unicodes = asciimat(text)
Для скаляра или строки text
,
asciimat(text)
эквивалентно ascii(text)
.
Все строчки склеиваются друг с другом перед построением вектора-строки
кодов их символов.
Для любого массива text любых
размеров, сделанных только из пустых строк "" ,
asciimat(text) возвращает [] .
Действительно, asciimat(…) считает ""
как пустой вектор (индексированных) символов как в Octave/Matlab, а не
как текстовый объект Scilab. |
Для двумерных матриц text
,
asciimat(text)
строит уникальный столбец текста,
склеивая столбцы text
вдоль строк.
Затем для каждой строки/строчки столбца вычисляется вектор-строка кодов ASCII или UTF-8 всех её символов.
Наконец, все результирующие вектор-строки кодов конкатенируются
по вертикали для построения матрицы unicodes
.
Слишком короткие векторы кодов предварительно дополняются кодом
ascii(" ")==32.
Для гиперматрицы text
,
обработка, в основном, та же самая, как если бы все строки
text
по всем размерностям больше двух были предварительно
составлены в двумерную матрицу. Результирующая двумерная матрица
unicodes
, наконец, преобразуется в гиперматрицу.
Размеры массивов unicodes
и text
отличаются только по количеству их столбцов.
text = asciimat(unicodes)
Для скаляра или строки
unicodes
,
asciimat(unicodes)
эквивалентна
ascii(unicodes)
.
Она возвращает символьные строки, чьи символы имеют указанные коды.
Нули стоят для кода пустого символа "" , поскольку
настоящий символ ascii(0) пока что не поддерживается
в Scilab 6. |
Для столбца, матрицы или гиперматрицы
unicodes
, каждая строка unicodes
обрабатывается отдельно и строит отдельную символьную строку Scilab.
Все завершающие пробелы ascii(32)
построенных
символьных строк отсекаются.
Наконец, text
имеет размер unicodes
,
за исключением size(text,2)==1
.
Примеры
asciimat([]) asciimat("") asciimat(0) r = asciimat("A") asciimat(r) // Со СТРОКОЙ на входе: r = asciimat(["A" "BC"]) asciimat(r) r = asciimat(["A" "" "BC"]) // "" в строках игнорируются asciimat(r)
--> asciimat([]) ans = [] --> asciimat("") ans = [] --> asciimat(0) ans = "" --> r = asciimat("A") r = 65. --> asciimat(r) ans = "A" --> // With an input ROW: --> r = asciimat(["A" "BC"]) r = 65. 66. 67. --> asciimat(r) ans = "ABC" --> r = asciimat(["A" "" "BC"]) // "" in rows are ignored r = 65. 66. 67. --> asciimat(r) ans = "ABC"
Со столбцом на входе:
asciimat(["" ; ""]) asciimat((97:110)')' strsplit("a":"n")' r = asciimat(["ABC" ; "" ; "D"]) // Дополнение коротких строк с помощью 32 asciimat(r) r = asciimat(["AB" ; "αβ"]) // используется 1-байтный код UTF-8 asciimat(r) // завершающие пробелы ascii(32) отсекаются
--> asciimat(["" ; ""]) ans = [] --> asciimat((97:110)')' ans = "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" --> strsplit("a":"n")' ans = "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" --> r = asciimat(["ABC" ; "" ; "D"]) // Padding short rows with 32 r = 65. 66. 67. 32. 32. 32. 68. 32. 32. --> asciimat(r) ans = "ABC" "" "D" --> r = asciimat(["AB" ; "αβ"]) // 1-byte UTF-8 coding is used r = 65. 66. 32. 32. 206. 177. 206. 178. --> asciimat(r) // Trailing ascii(32) spaces are trimmed ans = "AB" "αβ"
С двумерной матрицей на входе:
r = asciimat([" AB", " ", "CD " ; "α", "βγ", " "]) asciimat(r)
--> r = asciimat([" AB", " ", "CD " ; "α", "βγ", " "]) r = 32. 65. 66. 32. 67. 68. 32. 206. 177. 206. 178. 206. 179. 32. --> asciimat(r) ans = " AB CD" "αβγ"
С трёхмерной гиперматрицей на входе:
x = ["a €" "bδ " ; "" "" ; "" "" ]; x2 = [" α" "βδc" ; "" "" ; "ε4" ""]; h = cat(3, x, x2) r = asciimat(h) asciimat(r)
--> h = cat(3, x, x2) h = (:,:,1) "a €" "bδ " "" "" "" "" (:,:,2) " α" "βδc" "" "" "ε4" "" --> r = asciimat(h) r = (:,:,1) 97. 32. 226. 130. 172. 98. 206. 180. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. (:,:,2) 32. 206. 177. 206. 178. 206. 180. 99. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 206. 181. 52. 32. 32. 32. 32. 32. 32. --> asciimat(r) ans = (:,:,1) "a €bδ" "" "" (:,:,2) " αβδc" "" "ε4"
История
Версия | Описание |
6.1.1 |
|
Report an issue | ||
<< compatibility_functions | compatibility_functions | cellstr >> |