Main Content

parse

类: matlab.net.http.HeaderField
命名空间: matlab.net.http

解析标头字段值并返回为字符串

说明

value = parse(obj) 解析标头字段的 Value 属性并返回字符串。使用此方法处理 matlab.net.http.field 命名空间中不存在类的标头字段。可使用 matlab.net.http.HeaderField.displaySubclasses 方法显示命名空间中的类。对于命名空间中存在的类,使用相应的 convert 方法解析值。

解析规则基于 Internet Engineering Task Force (IETF®) 网站上的 RFC 7230 Message Syntax and Routing 的 sections 3.2.4-3.2.6 的内容,添加它们是为了解释多个值。

示例

value = parse(obj,fields) 为未命名的 struct 字段指定要使用的名称。

如果 struct 中的第 n 个字段无名称,则 fields 中存在对应的第 n 个名称且非空。它可以取代 Arg_N。使用此语法强制返回的 valuestruct(或 struct 对象的向量),其中包含的字段数至少与 fields 的长度相同。这种模式通常发生在以标记开头后跟属性对组的标头字段中。

value = parse(___,Name,Value) 指定一个或多个分隔符。默认分隔符为逗号和分号。您可以使用上述语法中的任何输入参量。

输入参数

全部展开

标头字段,指定为 matlab.net.http.HeaderField 对象或 HeaderField 对象的向量。

struct 字段的名称,指定为字符串向量、字符向量或字符向量元胞数组。

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

用于分隔数组元素的分隔符,指定为:

  • 用来指定可能的分隔符的字符串向量、字符向量或正则表达式元胞向量,按照它们在向量中出现的顺序进行解释。

  • '' - 不将 obj 解析为数组。MATLAB® 将插入引号和转义字符。

  • [] - 不将 obj 解析为数组。MATLAB 不会在数组元素中插入引号或转义字符。

用于分隔结构体字段的分隔符,指定为:

  • 用来指定可能的分隔符的字符串向量、字符向量或正则表达式元胞向量,按照它们在向量中出现的顺序进行解释。

  • '' - 不将 obj 解析为 struct。MATLAB 将插入引号和转义字符。

  • [] - 不将 obj 解析为 struct。MATLAB 不会在 struct 值中插入引号或转义字符。

输出参量

全部展开

标头字段的 Value 属性,返回为字符串向量、struct 数组或 struct 值的元胞数组。

MATLAB 将 Value 属性解析为以逗号分隔的字符串列表。每个字符串成为 value 向量的一个元素。元素为以下项之一:

  • name=value 对组构成的 struct

  • 由分号分隔值构成的 struct

  • 字符串,如果字段中不包含分号或等号或者看起来不像结构体。

parse 使用 matlab.lang.makeValidName 将每个 struct 字段的名称转换为有效的 MATLAB 标识符。对于下面的 Value 属性,parse 将基于 _p1 创建字段名称 x_p1

为了解决重复的名称,parse 将调用 matlab.lang.makeUniqueStrings。对于下面的 Value 属性,parse 将基于重复的字段名称 p1 创建字段名称 p11

如果 struct 字段中只包含 Value,而不包含 name=value 对组,则字段名称为 Arg_NN 是字段在 struct 中的顺位。对于下面的 Value 属性,parse 将为缺失的名称创建字段名称 Arg_2

Value 属性

输出参量

描述

"p1=first p2=second"
    p1: "first"
    p2: "second"

parsename=value 对组返回 struct

"first;second"
    Arg_1: "first"
    Arg_2: "second"

parse 返回 struct 并为分号分隔的值分配默认的字段名称。

"first second"
"first second"

如果字段中不包含分号或等号或者看起来不像结构体,parse 将返回字符串。

"_p1=first p2=second"
    x_p1: "first"
      p2: "second"

parse 将无效的字段名称 _p1 转换为 x_p1

"p1=first p1=second"
     p1: "first"
    p11: "second"

parse 将重复的字段名称 p1 转换为 p11

"p1=first; second"
       p1: "first"
    Arg_2: "second"

parseValue second 的缺失名称创建字段名称 Arg_2

"p1=first; p3=(a comment here)"
    p1: "first"
    p3: "(a comment here)"

parse 保留注释。

如果 obj 是标头字段向量,则 parse 方法会将每个字段的解析结果串联成一个数组。如果值的类型不同,则 value 是一个元胞数组。

标头字段向量的 Value 属性

元胞数组输出参量的元素

"p1=first p2=second"
x{1} =
 
    p1: "first"
    p2: "second"
"third"
x{2} =
 
third

示例

全部展开

假定您在来自服务器的响应消息中收到标头字段 H,其 Value 属性为 media-type; name1=value1; name2=value2。要运行此示例,请创建变量 H

H = matlab.net.http.HeaderField('Test-Name','media-type; name1=value1; name2=value2')
H = 

  HeaderField with properties:

     Name: "Test-Name"
    Value: "media-type; name1=value1; name2=value2"

解析 HValue 属性。MATLAB 创建的默认字段名称为 Arg_1

var = parse(H)
var = 

  struct with fields:

    Arg_1: "media-type"
    name1: "value1"
    name2: "value2"

将默认值更改为更有意义的名称 MediaType

var = parse(H,'MediaType')
var = 

  struct with fields:

    MediaType: "media-type"
        name1: "value1"
        name2: "value2"

属性

Sealedtrue

要了解方法的属性,请参阅方法属性

版本历史记录

在 R2016b 中推出