我正在尝试分隔一个很长的字符串,其起始标签为2424 ... 这个功能在起作用
using (var db = new ContextoDB())
{
var estado = await db.EstadosPorDispositivos
.Where(e => e.DipositivoID == this.DispositivoID)
.OrderByDescending(e => e.EstadoPorDispositivosID)
.FirstOrDefaultAsync()
.ConfigureAwait(false)
}
$ hex的十六进制字符串很长... 问题,而不是仅以2424开头的分隔字符串。...它拆分了任何以2或4开头的东西。 示例:24246778672552dd455 它给出了:4677867, 55岁 dd 55 我想要的是一个字符串中的6778672552dd455,直到下一个2424。任何更好的解决方案都会有所帮助。
答案 0 :(得分:1)
您可以只使用preg_split
将数据拆分为数组。
$hex = '24246778672552dd45524248763257490823508lale9794382';
$hexarray = preg_split("/(2424)/", $hex);
print_r($hexarray);
// expected result
// Array ( [0] => [1] => 6778672552dd455 [2] => 8763257490823508lale9794382 )
答案 1 :(得分:1)
一种简单的方法是将explode()
与2424用作分隔符。然后,您可以检查第一个元素是否为空(因此第一个2424之前没有任何内容)并且有不止一个元素(使用count()
)...
$test = "24246778672552dd4552424a123";
$results = explode("2424", $test);
if ( empty($results[0]) && count($results) > 1 ) {
//found
array_shift($results); // Remove empty element
print_r($results);
}
输出...
Array
(
[0] => 6778672552dd455
[1] => a123
)
strtok()
的问题在于,它将基于字符串中的任何字符来分割字符串,因此它将以2或4而不是2424进行分割。根据手册...
strtok()将字符串(str)拆分为较小的字符串(令牌), 每个令牌都由令牌中的任何字符分隔。