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') 使用指定的 format 将 str 中的数据读取到变量 A、B 等中。输出变量 A、B 等的数量必须与 format 参数中的格式设定符(例如,%s 或 %d)的数量相同。只要在命令中仅使用一个格式设定符,就可以将 str 中的所有数据读取到单个输出变量中。请参阅下面的示例 4 和示例 5。
表strread 的格式列出了有效的格式设定符。下面的提示部分中的格式下提供了有关如何使用格式的详细信息。
[A, B, ...] = strread('str', 'format',
N) 通过重用 format 字符向量 N 次来读取 str 中的数据,其中 N 是大于零的整数。如果 N 为 -1,则 strread 读取整个字符向量。当 str 仅包含数值数据时,可以将 format 设置为空字符向量 ('')。请参阅下面的示例 3。
[A, B, ...] = strread('str', 'format',
N, param, value, ...) 使用 param/value 对组自定义 strread,如下面的表strread 的参数和值中所列。当 str 仅包含数值数据时,可以将 format 设置为空字符向量 ('')。N 参数是可选的,可以完全省略。请参阅下面的示例 7。
strread 的格式
格式操作输出字面值
(普通字符)忽略匹配的字符。例如,在 Dept 后跟一个数字(表示部门编号)的字符向量中,要跳过 Dept 仅读取数字,请在 format 字符向量中使用 'Dept'。无
%d读取有符号整数值。双精度数组
%u读取整数值。双精度数组
%f读取浮点值。双精度数组
%s读取以空白分隔的字符向量。字符向量元胞数组
%q读取带双引号的字符向量,并忽略双引号。字符向量元胞数组
%c读取包括空白在内的字符。字符数组
%[...]读取包含方括号中指定的字符的最长字符向量。字符向量元胞数组
%[^...]读取包含非方括号中指定字符的最长非空字符向量。字符向量元胞数组
%*...忽略 * 之后的字符。请参阅下面的示例 8。无输出
%w...读取 w 指定的字段宽度。%f 格式支持 %w.pf,其中 w 是字段宽度,p 是精度。
strread 的参数和值
参数值操作whitespace下面列表中的任一项:将字符向量 * 视为空白。默认值是 \b\r\n\t。
\b
\n
\r
\t
\\
%%
''退格符
换行符
回车符
水平制表符
反斜杠
百分比符号
单引号
delimiter分隔符指定分隔符。默认值是一个或多个空白字符。
expchars指数字符默认值是 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 = '
[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 字符向量中指定的转换设定符的数量匹配。
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 之前推出
strread函数用于从字符串中读取格式化的数据,但已不推荐使用,建议替换为textscan。该函数支持多种格式设定符,如%d、%f、%s等,用于读取整数、浮点数和字符串。可以设置参数定制读取行为,例如指定分隔符、字段宽度等。示例展示了不同用法,包括读取1×N向量、单独变量、部分数据等。
从字符串中读取格式化数据&spm=1001.2101.3001.5002&articleId=115830436&d=1&t=3&u=65570c8f4223455397e2105c214722d3)
4395

被折叠的 条评论
为什么被折叠?



