繁体   English   中英

拆分逗号分隔的字符串,但只能用逗号分隔

[英]Split a comma separated string but only split by a comma

嗨,我有一个很长的字符串

0BV,0BW,100,102,108,112,146,163191,192,193,1D94,19339,1A1,1AA,1AE,1AFD,1AG,1AKF.......

我希望通过分页来显示它

喜欢

0BV,0BW,100,102,108,112,146
163191,192,193,1D94,19339
1A1,1AA,1AE,1AFD,1AG,1AKF

我想要做的是从字符串创建子字符串,长度为100个字符,但如果第100个字符不是逗号,我想检查字符串中的下一个逗号并将其拆分。

我尝试使用chunk()按字数分割,但由于子字符串长度不同,因此在页面中显示不合适

$db_ocode   = $row["option_code"];

$exclude_options_array =    explode(",",$row["option_code"]);
$exclude_options_chunk_array = array_chunk($exclude_options_array,25);

$exclude_options_string = '';   
foreach($exclude_options_chunk_array as $exclude_options_chunk)
{
    $exclude_options_string .= implode(",",$exclude_options_chunk);
    $exclude_options_string .= "</br>";
}

请帮忙 。 提前致谢

拿绳子,设置截止位置。 如果该位置不包含逗号,则在该位置后找到第一个逗号并在那里切断。 简单

<?php

$string="0BV,0BW,100,102,108,112,146,163191,192,193,1D94,19339,1A1,1AA,1AE,1AFD";

$cutoff=30;
if($string[$cutoff]!=",")
  $cutoff=strpos($string,",",$cutoff);
echo substr($string,0,$cutoff);

小提琴

(.{99})(?=,),|([^,]*),

而不是拆分你可以抓住很容易的捕获。参见20字符的演示。

https://regex101.com/r/sH8aR8/37

使用Hanky Panky的回答我能够为我的问题提供一个完整的解决方案,非常感谢Hanky panky。 如果我的代码效率不高,请编辑它。

$string="0BV,0BW,100,102,108,112,146,163191,192,193,1D94,19339,1A1,1AA,1AE,1AFD";

for($start=0;$start<strlen($string);) {

       $cutoff=30;
       if(isset($string[$start+$cutoff]) && $string[$start+$cutoff]!=",") 
       {
          $cutoff=strpos($string,",",$start+$cutoff);        
       }
       else if(($start+$cutoff) >= strlen($string))
       {
          $cutoff = strlen($string);
       }
       else if($start >= 30)
       {
          $cutoff = $start + $cutoff;
       }

       echo substr($string,$start,$cutoff-$start)."\n";
       $start=$cutoff+1;
    }

如果是python

ln=0
i=1
str='0BVAa,0BW,100,102,108,112,146,163191,192,193,1D94,19339,1A1,1AA,1AE,1AFD,1AG,1AKF'
for item in str:
    print (item),
    ln=ln+len(item)
    if ln/10>=i and item==',':
        print ""
        i=i+1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM