文档

sscanf

从字符串中读取格式的数据

句法

a =sscanf(str,formatSpec)
A = SSCANF(Str,FormatsPec,Sizea)
[[一个,,,,n] = sscanf(___
[[一个,,,,n,,,,errmsg] = sscanf(___
[[一个,,,,n,,,,errmsg,nextindex] = sscanf(___

描述

例子

一个= sscanf(str,,,,formatSpec从中读取数据str,,,,converts it according to the format specified byformatSpec, 和returns the results in an array.str字符数组或吗字符串标量。Thesscanffunction repeatedly appliesformatSpec到字符中的序列struntil it either reaches the end ofstr或不匹配formatSpec一系列字符。如果str是一个超过一行的角色数组,sscanf按列顺序读取字符。

例子

一个= sscanf(str,,,,formatSpec,,,,sizeA将输出数组的大小设置为sizeAand then reads data fromstrinto the output array.sizeAmust be a positive integer or have the form[m n],,,,wheremandn是积极的整数。

例子

[[一个,,,,n] = sscanf(___还返回的元素数量sscanf成功地读取一个

例子

[[一个,,,,n,,,,errmsg] = sscanf(___还返回一个字符向量,该角色向量包含错误消息sscanf未能将所有数据读为一个。如果sscanf然后成功errmsg是an empty character vector.

例子

[[一个,,,,n,,,,errmsg,,,,NextIndex] = sscanf(___also returns the index of the position instr这立即跟随了最后一个角色扫描sscanf

例子

全部收缩

Create a character vector that represents several numbers separated by whitespace characters. Convert the character vector to a column vector of numbers.sscanf将空格字符视为数字之间的分离器。

chr ='2.7183 3.1416 0.0073'
chr ='2.7183 3.1416 0.0073'
a = sscanf(chr,'%f'
a =2。7183 3.1416 0.0073

创建一个表示几个数字的字符串,并使用sscanf。指定输出数组的大小。

从R2017A开始,您可以使用双引号来创建字符串string功能。

str =“ 2.7183 3.1416 0.0073”
str =“ 2.7183 3.1416 0.0073”
a =sscanf(str,'%f',[1 3])
a =2。7183 3.1416 0.0073

Convertstr到2 x-2矩阵。因为str仅代表三个数字,sscanfpads一个用足够的零填充矩阵。

a =sscanf(str,'%f',[2 2])
a =2.7183 0.0073 3.1416 0

Create a string that contains numbers separated by whitespace characters. Count the elements thatsscanfputs into the output array when it converts the string to numbers.

从R2017A开始,您可以使用双引号来创建字符串string功能。

str ="78 72 64 66 49"
str =“ 78 72 64 66 49”

计算输出数组中的元素一个。使用字符串中的数字使用%doperator.%dmatches integers separated by whitespace. To return the number of elements in一个,指定第二个输出参数。

[[一个,,,,n] = sscanf(str,'%d'
a =78 72 64 66 49
n = 5

创建一个字符串并从中读取数据。什么时候sscanffails to convert all of the input string, display the error message.

从R2017A开始,您可以使用双引号来创建字符串string功能。

str =“ 3.14159是PI的前6位数字”
str =“ 3.14159是PI的前6位数字”

转换数字str。自从str还包含字符%F无法匹配,sscanf返回错误消息。sscanfstops processing as soon as it encounters the word'are'因为它不能转换为数字。

[a,n,errmsg] = sscanf(str,'%f'
a = 3.1416
n = 1
errmsg= 'Matching failure in format.'

Create a character vector and read data from it. Whensscanffails to convert all of the input, return the index that immediately follows the position at whichsscanf停了下来。使用此索引显示未频率的输入。

chr ='3.14159是PI的前6位数字'
chr ='3.14159是PI的前6位数字'

转换数据chr。返回索引。

[a,〜,〜,NextIndex] = sscanf(chr,'%f'
a = 3.1416
NextIndex= 9

Display the characters fromchrsscanf没有扫描。

chr(nextindex:end)
Ans ='是PI'的前6位数字

Create a string that contains several temperatures, indicated by the degree symbol and the letterF。将温度转换为数字阵列。

从R2017A开始,您可以使用双引号来创建字符串string功能。To insert the degree symbol (char(176)),,,,use the插入功能。

t ="78F 72F 64F 66F 49F";degreesymbol = char(176);t = insertbefore(t,'F',degreesymbol)
t ="78°F 72°F 64°F 66°F 49°F"

Return the temperatures as a numeric array.

a = sscanf(t,strcat(“%d”,devreesymbol,“F”))
a =78 72 64 66 49

输入参数

全部收缩

输入text to scan, specified as a character array or string scalar. Ifstr是一个字符数组,然后它可以具有多个行,并且sscanf按列顺序读取字符。

Data Types:char|string

Format of the input fields, specified using formatting operators.formatSpec可以是单引号中的字符向量,也可以是字符串标量。

数字字段

该表列出了可用的转换说明符,以将文本转换为数字输出。sscanf将值转换为其十进制(基本10)表示。

数字字段类型

Conversion Specifier

描述

Integer, signed

%d

基础10。

%一世

值确定基础:

  • 默认值为基本10。

  • 如果the initial digits are0xor0X,然后这些值为16(十六进制)。

  • 如果the initial digit is0,然后值是基本8(八进制)。

%ldor%li

64位值,基础10、8或16。

Integer, unsigned

%u

基础10。

%o

基地8(八分之一)。

%X

基地16(十六进制)。

%鲁,,,,%lo,,,,%lx

64位值,基础10、8或16。

浮点数

%F,,,,%e,,,,or%G

浮点值。输入字段可以包含以下任何一个(不敏感):inf,,,,-inf,,,,,,,,or-Nan。表示浮点数的输入字段可以包括领先+or-使用符号和指数符号eore。The conversion specifiers%F,,,,%e, 和%Gall treat input fields the same way.

Character Fields

This table lists available conversion specifiers to convert text so that the output is a character array.

字符字段类型

Conversion Specifier

描述

Character vector or string scalar

%s

阅读文字直到sscanfencounters whitespace.

%C

Read any single character, including whitespace.
要一次读取多个字符,请指定字段宽度。例如,%10C一次读取10个字符。

模式匹配

%[[。。。]

在括号中仅读取字符,直到第一个不匹配的字符或空格。

例子:%[mus]阅读'夏天 '作为“总结”

如果formatSpec包含数字和字符指定的组合,然后sscanf将每个字符转换为其数字等效。

Optional Operators

  • 字段和字符要忽略

    sscanf阅读all numeric values and characters in sequence, unless you tell it to ignore a particular field or a portion of a field. To skip fields, insert an asterisk (*)符号百分比之后(%GydF4y2Ba)。例如,要跳过整数,请指定%*d

  • Field Width

    To specify the maximum number of digits or text characters to read at a time, insert a number after the percent character. For example,%10C一次最多可读取10个字符,包括Whitespace。%4F一次读取多达四位数,包括小数点。

  • Literal Text to Ignore

    sscanf在转换说明符之前或之后忽略指定的文本。

    例子:级别u阅读'1级'作为1

    例子:%uStep阅读'2step'作为2

Data Types:char|string

输出阵列的尺寸,一个,,,,specified asinf,,,,a positive integer, or a two-element row vector.

形式sizeA输入

描述

inf

Read input to the end.
对于数值型数据,一个是a column vector.
对于文本数据,一个是角色向量。

n

最多阅读n数字值或空格限制的字符字段。
对于数值型数据,一个是a column vector.
对于文本数据,一个是角色向量。

[m n]

最多阅读m*n数字值或字符字段。ninf,,,,butm不能。一个m-经过-n,填充列顺序。

Data Types:double|single|int8|INT16|INT32|int64|uint8|UINT16|uint32|uint64

Output Arguments

全部收缩

输出数据,作为列向量,矩阵或字符数组返回。班级和大小一个depend on the conversions specified byformatSpec以及由sizeA

  • 如果formatSpec仅包含numeric specifiers, then一个是数字列向量。如果您还指定sizeA争论,然后一个是指定尺寸的矩阵,如有必要,用零填充。如果输入包含的少于sizeAvalues, then the size of一个是smaller thansizeA。相反,它是存储从输入扫描的值所需的大小。

    • 如果formatSpec仅包含64位签名的整数指定符,然后一个是of classint64

    • 如果formatSpec仅包含64-bit unsigned integer specifiers, then一个是of classuint64

    • Otherwise,一个是of classdouble

  • 如果formatSpec仅包含%Cor%s然后一个是角色向量。如果you also specifysizeA, 然后一个是a character array, and is padded as necessary with null characters. (The null character is a control character with the value zero.) If the input contains fewer thansizeA字符,然后大小一个是smaller thansizeA。相反,它是存储从输入扫描的字符所需的大​​小。

  • 如果formatSpec包含数字和字符指定的组合,然后一个是数字,类double, 和sscanf将每个字符转换为其数字等效。This conversion occurs even whenformatSpecexplicitly skips all numeric fields (for example,formatSpec'%*d %s')。

  • 如果sscanf无法匹配所有输入formatSpec, 然后一个可numeric or a character array. The class of一个depends on the values thatsscanf在停止处理之前读取。

Data Types:double|int64|uint64|char

读取输出数组的元素数量,返回为整数。

Data Types:double

错误消息,返回为字符向量。如果str包含任何数据sscanfcannot convert, thenerrmsg包含一个错误消息。如果sscanf成功转换所有数据,然后errmsg是an empty character vector.

Data Types:char

最后一个角色扫描后的位置,以整数返回。

Data Types:double

提示

  • Format specifiers for the reading functionssscanfandfscanfdiffer from the formats for the writing functionsSprintfandfprintf。阅读功能不支持精度字段。金宝app宽度字段指定写作的最低限度,但最大的阅读。

Introduced before R2006a

这个话题有帮助吗?