matlab 字符串中提取数,(不推荐)从字符串中读取格式化数据

strread函数用于从字符串中读取格式化的数据,但已不推荐使用,建议替换为textscan。该函数支持多种格式设定符,如%d、%f、%s等,用于读取整数、浮点数和字符串。可以设置参数定制读取行为,例如指定分隔符、字段宽度等。示例展示了不同用法,包括读取1×N向量、单独变量、部分数据等。

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 之前推出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值