以前我问过这个问题Putting a simple expression language into java关于允许用户输入支持 if 语句、子字符串等的格式化掩码。
使用 Script Engine 和 javascript 的答案有效,但是 javascript 语法对用户来说不是很容易
(albumartist.length>0 ? albumartist +'-' :(artist.length>0 ? artist + '-' : ' ')) + (album.length>0 ? album + '-' :'') + (trackno.length>0 ? trackno + '-' :'') + title
可以输出
U2-Boy-Twilight-02
但更简单的语法类似于
if(%albumartist%,%artist%)-if(%album%,%album%-)if(%trackno%,%trackno-)%title
主要区别是我们不必用 '+' 显式连接字符串或用 ' ' 引用字符串文字
这类似于http://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Reference#.24if2.28a.2Celse.29中详述的 Foobar 标题格式参考,但我无法对此进行物理实现用Java解析。
有任何想法吗 ?