0

我需要将一个字符串拆分成一个类似这样的嵌套数组。实际数据的一小部分

  • 没有固定的大小,代码可以是aaa100bbbbbbbb100
  • 没有固定的字符可以拆分

一个类似的问题是将文件路径转换为数组,但我没有任何/想要拆分的东西。

用例:

几千种产品的产品进口。每个产品代码由以下内容组成:

xxx product type
yyy size
zzz colour

所以你有类似xxxx,xxxxyyxxxxzz的代码xxxxyyzz

AAA100B // product type AAA with size 100 and colour blue
AAA200B // product type AAA with size 200 and colour blue
AAA100G // product type AAA with size 100 and colour green
BBB100B // product type BBB with size 100 and colour blue

有些没有颜色,有些没有大小。有些可能没有“匹配”,只是一个单独的代码。

编辑

最后一个字符(或两个)通常是一种颜色。颜色可以是以下任何一种。(除了字符串的结尾,颜色代码永远不会出现在任何地方)

BK, GY
B, G, O, P, R, S

数字被假定为大小,如果数字是00-00它的长度/宽度的形式,否则它是一个单一的大小00

编辑

问题的粗略开始,几乎在那里(扩展和合并是框架的一部分,所以只是在那里破解它们)http://codepad.viper-7.com/Wp19g2

4

1 回答 1

0

嗯,我想最明显(但效率低下)的方法是获取您的代码字符串,遍历字母直到您达到一个数字(将所有字母记录为您的产品类型),当您达到数字记录时那个值和它后面的每个数字,直到你再次到达一个字母,然后开始记录颜色。当然,这假设颜色和产品类型不包括数字!

$product_size = ""; $product_type = ""; $product_color = "";
for ($i = 0; $i < strlen ( $code ); $i++ ) {
     if ( !is_numeric ( $code [ $i ] ) ) { 
          if ( $product_size == "" ) $product_type .= $code [ $i ];
          else $product_color .= $code [ $i ]
     } else $product_size .= $code [ $i ];
}

不过,有一个分离器是一个很好的设计选择。我的解决方案的一个问题是,如果没有产品尺寸,那么它永远不会记录颜色。

于 2012-12-06T23:38:03.147 回答