如何使用大写字母作为分隔符来拆分字符串?

4

你好,我正在尝试使用php explode实现这个功能,但是我遇到了困难。

这是我的代码:

<?php
$capitals = array("A","B","C");
$word_break = "brandonBjakeCsullano";

$count = 0;

while ($count <=2)
{

$break =  explode($capitals[$count++],$word_break)


}
echo $break[0];
echo "<br/>";
echo $break[1];

?>

使用以上代码,我可以得到以下结果: 这就是我想要实现的: 感谢您的帮助。
任何策略都可以接受,只要不是我的做法.. 提前致谢。

出于好奇,为什么要使用大写字母作为字符串分隔符?我强烈建议使用其他方式来识别拆分/分解。 - Epodax
$breakwhile 循环中被重置了。你只是得到了第三个 explode 的结果。Epodax 关于使用单个非字母分隔符的建议是正确的。 - Umair Khan
是的,我想使用除字母以外的另一个分隔符,但我们的文件不支持这种格式。 - Brandon Jake Sullano
有人能给我建议一下下面哪段代码运行得更快吗?因为它们现在都正常工作,速度很重要。 - Brandon Jake Sullano
谢谢兄弟,这可能会很具有挑战性。 - Brandon Jake Sullano
显示剩余2条评论
4个回答

3

尝试使用str_replaceexplode进行操作:

$capitals = array("A","B","C");
$word_break = "brandonBjakeCsullano";
$word_break = str_replace($capitals, '/',$word_break);
print_r(explode('/',$word_break));//Array ( [0] => brandon [1] => jake [2] => sullano )

编辑,如果您想要输出,则可以简单地将其用作

echo implode('<br>',explode('/',$word_break));// instead of print_r

1) 如果您使用 print_r(explode('/',$word_break)); 这个函数。

OK (0.008 sec real, 0.008 sec wall, 14 MB, 71 syscalls)

2) 如果你使用echo implode("\n",explode('/',$word_break));的话

OK (0.008 sec real, 0.009 sec wall, 14 MB, 42 syscalls)

3) 如果您使用以下代码:$res=explode('/',$word_break); foreach($res as $value){ echo $value."\n";
}


OK (0.012 sec real, 0.015 sec wall, 14 MB, 44 syscalls)

我看不需要更多的循环,策略不错 :) - Brandon Jake Sullano
可以轻松地实现这一点,而无需使用循环。 - Narendrasingh Sisodia
检查我的编辑答案,它将在不使用循环的情况下回显您的值。 - Narendrasingh Sisodia
是的,我能够向我的老板介绍这个答案,并且他选择了它。谢谢兄弟!请继续分享你的才华。 - Brandon Jake Sullano

2

这里有另一个要尝试的:

<?php
$capitals = array("A","B","C");
$string = "brandonBjakeCsullano";

$count = 0;
$capitals = array("A","B","C");
$string = "brandonBjakeCsullano";
$string = str_replace($capitals, '/',$string);
$res= explode('/',$string);
foreach($res as $value){ 
    echo $value."<br>";   
}
?>

输出:

brandon
jake
sullano

以下是参考资料点击此处

这是一段关于IT技术的内容。

我可以知道上面哪种查询方式会更快吗? - Brandon Jake Sullano
我不明白你在问什么? - RaMeSh
我是说这里有一些可行的答案,但我想知道哪一个更快? - Brandon Jake Sullano
如果您想要漂亮的样式输出,我的答案会更快且看起来更好。 - RaMeSh
根据您的需求,您必须决定最佳答案。 - RaMeSh

1

您可以使用preg_split函数,它允许您使用正则表达式将字符串拆分为数组。

例如(未经测试):

$names = preg_split( '/[A-Z]/', 'brandonBjakeCsullano' );
print_r( $names );

你能提供一个可用的代码来使用这种风格吗? - Brandon Jake Sullano
我非常确定我发布的代码应该可以工作。你试过了吗?$names变量的值是多少? - Dominic P
是的,我尝试过了,但我不确定如何使用这种方式输出值。 - Brandon Jake Sullano
一旦你有了一个数组,就可以循环遍历它或使用print_r来查看它的内容。这里其他答案中都有这两种方法的示例。 - Dominic P
我仍然很好奇如何使用这种风格,它看起来很有趣。 - Brandon Jake Sullano
我的老板决定采用这种方式 :) 感谢您,对于我之前选择的答案感到抱歉,但这是最简短的方式。 - Brandon Jake Sullano

0

试试这个:

<?php
$capitals = array("A","B","C");
$word_break = "brandonBjakeCsullano";
$arr=str_split($word_break);
for($i=0;$i <=strlen($word_break);$i++){
    for($j=0;$j<=2;$j++){
        if($arr[$i]!=$capitals[$j]){
            $flag=TRUE;
        }
        else{
            $flag=FALSE;
            echo '<br>';
            break;
        }

    }
    if($flag==TRUE){
        echo $arr[$i];
    }
}

?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接