我的问题与this question的情况相同,但文本中可能会出现多个_
。
一个例子;
57b42a0557cdd_Filename_whatever.pdf
如何在第一个下划线(包括下划线)之前省略所有内容,以保持其余内容,如Filename_whatever.pdf
随机单引号可以有不同的长度,但它与实际文件名之间总是有一个下划线。
就像上面提到的问题一样; {{ filename|split('_')[1] }}
可能有效,但如果实际文件名有下划线会怎么样?
我希望它最好只用于显示目的,因为完整的唯一名称也用于项目的不同部分。
答案 0 :(得分:9)
如documentation所示,split
也支持将limit
参数作为explode
,因此您可do:
{{ '57b42a0557cdd_Filename_whatever.pdf' | split('_', 2)[1] }}
{{ '57b42a0557cdd_Filename_what_ever.pdf' | split('_', 2)[1] }}
{{ '57b42a0557cdd_File_name_whatever.pdf' | split('_', 2)[1] }}
答案 1 :(得分:1)
另一个选项(假设文件是实体的一部分)是在实体上编写一个返回所需内容的函数。
例如;
splice.call()
然后在你的twig文件中;
"analysis": {
"char_filter": {
"test": {
"type": "pattern_replace",
"pattern": "\\b((\\w+)'s)\\b",
"replacement": "$1 $2 $2s"
}
},
"filter": {
"my_word_delimiter": {
"type": "word_delimiter",
"preserve_original": true,
"catenate_all": true,
"split_on_case_change": true,
"stem_english_possessive": true
}
},
"analyzer": {
"my_analyzer": {
"filter": [
"my_word_delimiter"
],
"char_filter" : ["test"],
"type": "custom",
"tokenizer": "whitespace"
}
}
}