Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2023.1.0 - Русский


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 €" "" ; "" "" ;  "" "" ];
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"

Смотрите также

  • ascii — преобразование в строку ASCII
  • char — преобразует в массив символов

История

ВерсияОписание
6.1.1
  • Принимаются текстовые компоненты различной длины или/и включая символы UTF-8. Реализовано дополнение кодами ascii(" ")==32.
  • asciimat(unicodes) отсекает все завершающие пробелы.
  • Для любых гиперматрицы unicodes, r = asciimat(unicodes) больше не сжимает size(r,2).
Report an issue
<< compatibility_functions compatibility_functions cellstr >>

Copyright (c) 2022-2023 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon May 22 12:41:19 CEST 2023