exponenta event banner

strread

(Не рекомендуемый) отформатированные данные Рида от строки

strread не рекомендуется. Используйте textscan вместо этого.

Синтаксис

A = strread('str')
[A, B, ...] = strread('str')
[A, B, ...] = strread('str', 'format')
[A, B, ...] = strread('str', 'format', N)
[A, B, ...] = strread('str', 'format', N, param, value, ...)

Описание

A = strread('str') считывает числовые данные из вектора вводимого символа str в 1 N векторным A, где N равняется количеству разделенных от пробела чисел в str. Используйте эту форму только с векторами символов, содержащими числовые данные. Смотрите Пример 1 ниже.

[A, B, ...] = strread('str') считывает числовые данные из входа str вектора символов в скалярные выходные переменные A, B, и так далее. Количество выходных переменных должно равняться количеству разделенных от пробела чисел в str. Используйте эту форму только с векторами символов, содержащими числовые данные. Смотрите Пример 2 ниже.

[A, B, ...] = strread('str', 'format') считывает данные из str в переменные A, B, и так далее с помощью заданного format. Количество выходных переменных A, B, и т.д. должно быть равно количеству спецификаторов формата (например, %s или %d) в аргументе format. Можно считать все данные в str к одной выходной переменной, пока вы используете только один спецификатор формата в команде. Смотрите Пример 4 и Пример 5 ниже.

Форматы таблицы для strread перечисляют спецификаторы допустимого формата. Больше информации об использовании форматов доступно под Форматами в разделе Tips ниже.

[A, B, ...] = strread('str', 'format', N) считывает данные из str, снова использующего вектор символов format времена N, где N является целым числом, больше, чем нуль. Если N-1, strread читает целый вектор символов. Когда str содержит только числовые данные, можно установить format на пустой символьный вектор (''). Смотрите Пример 3 ниже.

[A, B, ...] = strread('str', 'format', N, param, value, ...) настраивает strread с помощью param/value пары, как перечисленные в таблице Параметры и Значения для strread ниже. Когда str содержит только числовые данные, можно установить format на пустой символьный вектор (''). Аргумент N является дополнительным и может быть не использован полностью. Смотрите Пример 7 ниже.

Форматы для strread

Формат

Действие

Вывод

Литералы

(обычные символы)

Проигнорируйте соответствующие символы. Например, в векторе символов, которому следовал за Dept номер (для номера отдела), чтобы пропустить Dept и только для чтения номер, 'Dept' использования в векторе символов format.

'none'

%d

Считайте значение целого числа со знаком.

Двойной массив

%u

Считайте целочисленное значение.

Двойной массив

%f

Считайте значение с плавающей точкой.

Двойной массив

%s

Читайте пробел разделил вектор символов.

Массив ячеек из символьных векторов

%q

Считайте двойной заключенный в кавычки вектор символов, игнорируя кавычки.

Массив ячеек из символьных векторов

%c

Считайте символы, включая пробел.

Массив символов

%[...]

Считайте самый длинный вектор символов, содержащий символы, заданные в скобках.

Массив ячеек из символьных векторов

%[^...]

Считайте самый длинный непустой вектор символов, содержащий символы, которые не заданы в скобках.

Массив ячеек из символьных векторов

%*...

Проигнорируйте символы после *. Смотрите Пример 8 ниже.

Никакой вывод

%w...

Считайте ширину поля, заданную w. Формат %f поддерживает %w.pf, где w является шириной поля, и p является точностью.

 

Параметры и Значения для strread

параметрический усилитель

значение

Действие

whitespace

Любой из списка ниже:

Вектор обработок символов, *, как пробел. Значением по умолчанию является \b\r\n\t.

\b
\n
\r
\t
\\
%%
''
Клавиша Backspace
Новая строка
Возврат каретки
Горизонтальная вкладка
Наклонная черта влево
Знак процента
Одна кавычка
delimiter

Символ-разделитель

Задает символ-разделитель. Значением по умолчанию являются один или несколько пробельных символов.

expchars

ExponentCharacters

Значением по умолчанию является eEdD.

bufsize

Положительное целое число

Задает максимальную длину вектора символов, в байтах. Значением по умолчанию является 4095.

commentstylematlab

Игнорирует символы после %.

commentstyleshell

Игнорирует символы после #.

commentstylec

Игнорирует символы между /* и */.

commentstylec++

Игнорирует символы после //.

emptyvalueЗначение, чтобы возвратиться для пустых числовых полей в разграниченных файлахЗначением по умолчанию является 0.

Примеры

Пример 1

Считайте числовые данные в вектор 1 на 5:

a = strread('0.41 8.24 3.57 6.24 9.27')
a =
    0.4100    8.2400    3.5700    6.2400    9.2700

Пример 2

Считайте числовые данные в отдельные скалярные переменные:

[a b c d e] = strread('0.41 8.24 3.57 6.24 9.27')
a =
    0.4100
b =
    8.2400
c =
    3.5700
d =
    6.2400
e =
    9.2700

Пример 3

Считайте единственные первые три числа в векторе символов, также форматируя как плавающая точка:

a = strread('0.41 8.24 3.57 6.24 9.27', '%4.2f', 3)

a =
    0.4100
    8.2400
    3.5700

Пример 4

Обрежьте данные до одной десятичной цифры путем определения формата %3.1f. Второй спецификатор, %*1d, говорит strread не читать в остающейся десятичной цифре:

a = strread('0.41 8.24 3.57 6.24 9.27', '%3.1f %*1d')

a =
    0.4000
    8.2000
    3.5000
    6.2000
    9.2000

Пример 5

Считайте шесть чисел в две переменные, снова использовав спецификаторы формата:

[a b] = strread('0.41 8.24 3.57 6.24 9.27 3.29', '%f %f')

a =
    0.4100
    3.5700
    9.2700
b =
    8.2400
    6.2400
    3.2900

Пример 6

Считайте вектор символов и числовые данные к двум выходным переменным. Проигнорируйте запятые в векторе вводимого символа:

str = 'Section 4, Page 7, Line 26';

[name value] = strread(str, '%s %d,')
name = 
    'Section'
    'Page'
    'Line'
value =
     4
     7
    26

Пример 7

Считайте вектор символов, используемый в последнем примере, но на этот раз разграничив с запятыми вместо пробелов:

str = 'Section 4, Page 7, Line 26';

[a b c] = strread(str, '%s %s %s', 'delimiter', ',')
a = 
    'Section 4'
b = 
    'Page 7'
c = 
    'Line 26'

Пример 8

Считайте выбранные фрагменты вектора вводимого символа:

str = '<table border=5 width="100%" cellspacing=0>';

[border width space] = strread(str, ...
   '%*s%*s %c %*s "%4s" %*s %c', 'delimiter', '= ')
border =
     5
width = 
    '100%'
space =
     0

Пример 9

Считайте вектор символов в два вектора, ограничив значения Answer T и F. Также обратите внимание, что два разделителя (запятая и пробел) используются здесь:

str = 'Answer_1: T, Answer_2: F, Answer_3: F';

[a b] = strread(str, '%s %[TF]', 'delimiter', ', ')
a = 
    'Answer_1:'
    'Answer_2:'
    'Answer_3:'
b = 
    'T'
    'F'
    'F'

Советы

Если вы отключаете вектор вводимого символа с символом новой строки (\n), strread возвращает массивы равного размера путем дополнения массивов меньшего размера с символом emptyvalue:

[A,B,C] = strread(sprintf('5,7,1,9\n'),'%d%d%d', ...
             'delimiter', ',', 'emptyvalue',NaN)
A =
     5
     9
B =
     7
   NaN
C =
     1
   NaN

Если вы удаляете \n из вектора вводимого символа этого примера, массив, которым A продолжает быть 2 1 массив, но B и C теперь 1 на 1.

Разделители

Если ваши данные используют символ кроме пробела как разделитель, необходимо использовать параметр strread 'delimiter', чтобы задать разделитель. Например, если бы вектор символов, str использовал точку с запятой в качестве разделителя, вы использовали бы эту команду:

[names, types, x, y, answer] = strread(str,'%s %s %f ...
    %d %s','delimiter',';')

' format '

Вектор символов format определяет номер и типы возвращаемых аргументов. Количество возвращаемых аргументов должно совпадать с количеством спецификаторов преобразования в векторе символов format.

Функция strread продолжает читать str, пока целый вектор символов не читается. Если существует меньше спецификаторов формата, чем существуют сущности в str, strread повторно применяет спецификаторы формата, запускающиеся вначале. Смотрите Пример 5 ниже.

Вектор символов format поддерживает подмножество спецификаторов преобразования и соглашения языка C стандартная программа fscanf. Пробельные символы в векторе символов format проигнорированы.

Сохранение пробела

Если вы хотите сохранить продвижение и конечные пробелы в векторе символов, используйте параметр whitespace как показано здесь:

str = '   An  example      of preserving     spaces      ';

strread(str, '%s', 'whitespace', '')
ans = 
    '   An  example      of preserving     spaces      '

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

|

Представлено до R2006a