本文描述如何对 Size 变体的尺寸信息进行识别。
基本定义
尺寸识别,要从 Size 变体中识别出长、宽、高等。因为尺寸信息的填写很随意,所以编写本文档告知识别过程。
识别规则
- 尺寸只支持部分字符,不支持的字符将被忽略。
- 支持的字符:数字(0-9)、小数点(
.)、尺寸分隔符(x、X、*)、单位分组符(小括号()、斜杠/、逗号,)、单位字母(C、M、D、I、N、H、L、W)、英寸符号(")、空格。 - 如果没有给定单位,那么就使用厘米作为默认单位。
- 如果只有一个数字且没有指定单位,则不认为是有效的尺寸信息。
- 支持
x(小写)、X(大写)、*三种符号分割尺寸数值,比如1x2、1X2或1*2。 - 支持小括号、斜杠、逗号分割多组单位,比如
20x60cm(47x24in)、20x60cm/47x24in或10x20cm,5x10in。 - 默认使用“长、宽、高”顺序识别位置。比如
1x2x3时,代表:长 1 厘米,宽 2 厘米,高 3 厘米。 - 同上,当只有两个数据时,将第一个视作长、第二个视作宽。比如
1x2时,代表:长 1 厘米,宽 2 厘米。 - 如果携带单位,将自动识别单位并转换。
- 支持解析的长度单位:英寸(IN、INCH、
")、厘米(CM)、毫米(MM)、分米(DM)、米(M)。输出单位仅支持厘米和英寸,其他单位将转换为厘米。 - 厘米单位识别:CM(不区分大小写)。
- 英寸单位识别:IN、INCH(不区分大小写)、双引号(
")。 - 支持识别位置标识:长(L)、宽(W)、高(H),比如
W180xH100cm或10''W X 36''H。 - 在同一组尺寸数值中(如
10x20x30),不能混合使用不同单位。单位应统一标注在所有数字之后(如10x20x30cm)或每个数字之后(如10cmx20cmx30cm)。 - 多组单位必须使用小括号、斜杠或逗号分隔,比如
10x20cm(5x6in)是有效的,但10mmx5cmx2in无效。 - 当多组尺寸中,如果第一组指定了位置标识(L、W、H),后续组未指定位置标识时,将继承第一组的位置信息。比如
W180xH100cm/71x39in中,第二组的71x39将继承第一组的位置信息,解析为宽71 × 高39英寸。
支持的样例
| 输入样例 | 中文输出示例 | 简洁输出 |
|---|---|---|
| W180xH100cm/71x39in | 尺寸1:宽180 × 高100厘米 尺寸2:宽71 × 高39英寸 |
180 × 100厘米 / 71 × 39英寸 |
| 10”W X 36”H | 宽10 × 高36英寸 | 10 × 36英寸 |
| 20x60cm/47x24in | 尺寸1:长20 × 宽60厘米 尺寸2:长47 × 宽24英寸 |
20 × 60厘米 / 47 × 24英寸 |
| 18.9″W x 14.96″H | 宽18.9 × 高14.96英寸 | 18.9 × 14.96英寸 |
| 10x10x10cm | 长10 × 宽10 × 高10厘米 | 10 × 10 × 10厘米 |
| 10cmx10cmx10cm | 长10 × 宽10 × 高10厘米 | 10 × 10 × 10厘米 |
| 10cmx10cmx10cm(3.94×3.94×3.94in) | 尺寸1:长10 × 宽10 × 高10厘米 尺寸2:长3.94 × 宽3.94 × 高3.94英寸 |
10 × 10 × 10厘米 / 3.94 × 3.94 × 3.94英寸 |
| 尺寸(cm):10x10x10 | 长10 × 宽10 × 高10厘米 | 10 × 10 × 10厘米 |
| 10x10x10 | 长10 × 宽10 × 高10厘米 | 10 × 10 × 10厘米 |
| 10.5×20.3×30.7cm | 长10.5 × 宽20.3 × 高30.7厘米 | 10.5 × 20.3 × 30.7厘米 |
| 10.5×20.3×30.7in | 长10.5 × 宽20.3 × 高30.7英寸 | 10.5 × 20.3 × 30.7英寸 |
| 10.5×20.3×30.7dm | 长105 × 宽203 × 高307厘米 | 105 × 203 × 307厘米 |
| 10.5×20.3×30.7mm | 长1.05 × 宽2.03 × 高3.07厘米 | 1.05 × 2.03 × 3.07厘米 |
| 102030cm | 长10 × 宽20 × 高30厘米 | 10 × 20 × 30厘米 |
| 10x10x10in | 长10 × 宽10 × 高10英寸 | 10 × 10 × 10英寸 |
| 10x10x10inch | 长10 × 宽10 × 高10英寸 | 10 × 10 × 10英寸 |
| 100x100x100mm | 长10 × 宽10 × 高10厘米 | 10 × 10 × 10厘米 |
| 1x2x3dm | 长10 × 宽20 × 高30厘米 | 10 × 20 × 30厘米 |
| 1x2x3m | 长100 × 宽200 × 高300厘米 | 100 × 200 × 300厘米 |
| 50cm | 长50厘米 | 50厘米 |
| 10in | 长10英寸 | 10英寸 |
| 100mm | 长10厘米 | 10厘米 |
| 25.5cm | 长25.5厘米 | 25.5厘米 |
| 10x20cm(5x6in)(7x8mm) | 尺寸1:长10 × 宽20厘米 尺寸2:长5 × 宽6英寸 尺寸3:长0.7 × 宽0.8厘米 |
10 × 20厘米 / 5 × 6英寸 / 0.7 × 0.8厘米 |
| 1.1 inch | 长1.1英寸 | 1.1英寸 |
| 120x200cm/47×78.7in | 尺寸1:长120 × 宽200厘米 尺寸2:长47 × 宽78.7英寸 |
120 × 200厘米 / 47 × 78.7英寸 |
| 10x20cm,5x10in | 尺寸1:长10 × 宽20厘米 尺寸2:长5 × 宽10英寸 |
10 × 20厘米 / 5 × 10英寸 |
| 10″x20″x30″ | 长10 × 宽20 × 高30英寸 | 10 × 20 × 30英寸 |
不支持的样例
| 样例 | 原因 |
|---|---|
| 30 | 单位缺失,仅有一个数字 |
| abc x def | 非数字字符 |
| 10mmx5cmx2in | 毫米出现混合情况 |
| 5m1 | 单位应该在最后一个数字或者所有数字之后 |
| 1109020P3060 | 非尺寸信息 |
市场与长度单位对应表
| 市场 | 主要单位 | 次要单位 |
|---|---|---|
| 美国 | 英寸 (Inch) | 厘米 (Centimeter) |
| 加拿大 | 厘米 (Centimeter) | 英寸 (Inch) |
| 墨西哥 | 厘米 (Centimeter) | – |
| 巴西 | 厘米 (Centimeter) | – |
| 英国 | 英寸 (Inch) | 厘米 (Centimeter) |
| 法国 | 厘米 (Centimeter) | – |
| 德国 | 厘米 (Centimeter) | – |
| 西班牙 | 厘米 (Centimeter) | – |
| 意大利 | 厘米 (Centimeter) | – |
| 荷兰 | 厘米 (Centimeter) | – |
| 波兰 | 厘米 (Centimeter) | – |
| 比利时 | 厘米 (Centimeter) | – |
| 土耳其 | 厘米 (Centimeter) | – |
| 瑞典 | 厘米 (Centimeter) | – |
| 爱尔兰 | 厘米 (Centimeter) | – |
| 沙特 | 厘米 (Centimeter) | – |
| 阿联酋 | 厘米 (Centimeter) | – |
| 印度 | 厘米 (Centimeter) | – |
| 澳大利亚 | 厘米 (Centimeter) | 英寸 (Inch) |
| 日本 | 厘米 (Centimeter) | – |
| 新加坡 | 厘米 (Centimeter) | – |