在第一个特定字符之后分割字符串作为分隔符


Twig split a string after first specific character as delimiter

我有一个与这个问题相同的问题,除了可能发生多个_在文本中。

一个例子;

57b42a0557cdd_Filename_whatever.pdf

如何省略第一个下划线(包括下划线)之前的所有内容,以保持其余部分,如Filename_whatever.pdf

随机唯一符可以是不同的长度,但在它和实际文件名之间总是有一个下划线。

就像前面提到的问题一样;{{ filename|split('_')[1] }}可能工作,但如果实际的文件名有一个下划线呢?

我希望它最好在树枝只是为了显示的目的,因为完整的唯一名称是用于项目的不同部分,以及

在文档中可以看到,split也像explode一样支持limit参数,所以您可以这样做:

{{ '57b42a0557cdd_Filename_whatever.pdf'  | split('_', 2)[1] }}
{{ '57b42a0557cdd_Filename_what_ever.pdf' | split('_', 2)[1] }}
{{ '57b42a0557cdd_File_name_whatever.pdf' | split('_', 2)[1] }}

另一个选项(假设文件是实体的一部分)是在实体上编写一个函数,返回您想要的内容。
例如,

<?php
namespace AppBundle'Entity;
class MyEntity
{
    // ... other attributes
    private $hashFileName;
    private $cleanFileName;
    // other functions
    public function getHashFileName()
    {
        // as per you example; 57b42a0557cdd_Filename_whatever.pdf
        return $this->hashFileName;
    }
    public function getCleanFileName()
    {
        $withouthash = explode('_', $this->hashFileName,2);
        return $withouthash[1];
    }
}

然后在你的小枝文件;

{{ myObject.cleanfilename }}