任何类似于Foobar2000:Title Formatting Reference的脚本语言语法的Java支持

任何类似于Foobar2000:Title Formatting Reference的脚本语言语法的Java支持,java,javascript,Java,Javascript,以前我问过这个问题,关于允许用户输入支持if语句、子字符串等的格式掩码 与javascript一起使用脚本引擎的答案是可行的,但是javascript语法对于用户来说不是很容易 (albumartist.length>0 ? albumartist +'-' :(artist.length>0 ? artist + '-' : ' ')) + (album.length>0 ? album + '-' :'') + (trackno.length>0 ? trackno

以前我问过这个问题,关于允许用户输入支持if语句、子字符串等的格式掩码

与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
主要区别在于,我们不必显式地将字符串与“+”串联,也不必将字符串文字与“”引用

这类似于中详细介绍的Foobar标题格式参考,但我无法用Java解析它的物理实现

有什么想法吗?

  • AFAIK,标准JDK中只支持javascript(ECMAScript)。您可以使用下面的代码检查可用的发动机
  • 其他引擎在中也有,但我不相信您提到的语言是它们的一部分
  • 如果你喜欢(并且有很多空闲时间),你可以
您可以阅读更多关于发动机的信息,以及

最后,你可以“简单地”

总之,你要做的事情听起来并不容易-祝你好运!;-)

publicstaticvoidmain(字符串[]args){
ScriptEngineManager mgr=新建ScriptEngineManager();
列出工厂名单=
经理:getEngineFactories();
用于(ScriptEngineFactory工厂:工厂){
字符串engName=factory.getEngineName();
字符串engVersion=factory.getEngineVersion();
字符串langName=factory.getLanguageName();
字符串langVersion=factory.getLanguageVersion();
System.out.printf(“脚本引擎:%s(%s)\n”、engName、engVersion);
System.out.printf(“\t语言:%s(%s)\n”,langName,langVersion);
}
}
  • AFAIK,标准JDK中只支持javascript(ECMAScript)。您可以使用下面的代码检查可用的发动机
  • 其他引擎在中也有,但我不相信您提到的语言是它们的一部分
  • 如果你喜欢(并且有很多空闲时间),你可以
您可以阅读更多关于发动机的信息,以及

最后,你可以“简单地”

总之,你要做的事情听起来并不容易-祝你好运!;-)

publicstaticvoidmain(字符串[]args){
ScriptEngineManager mgr=新建ScriptEngineManager();
列出工厂名单=
经理:getEngineFactories();
用于(ScriptEngineFactory工厂:工厂){
字符串engName=factory.getEngineName();
字符串engVersion=factory.getEngineVersion();
字符串langName=factory.getLanguageName();
字符串langVersion=factory.getLanguageVersion();
System.out.printf(“脚本引擎:%s(%s)\n”、engName、engVersion);
System.out.printf(“\t语言:%s(%s)\n”,langName,langVersion);
}
}

只是好奇:你如何逃避“如果”和“%”文字?我不知道这在我的场景中会是个问题只是好奇:你如何逃避“如果”和“%”文字?我不知道这在我的场景中会是个问题哈,foobar链接显示有人有相同的想法并放弃了解决方案看起来我要坚持使用Javascript,但要提供一些预配置masks@PaulTaylor听起来很合理!哈,foobar链接显示有人有相同的想法,并放弃了一个解决方案看起来我将坚持使用Javascript,但提供了一些预配置masks@PaulTaylor听起来很合理!
public static void main(String[] args) {
    ScriptEngineManager mgr = new ScriptEngineManager();
    List<ScriptEngineFactory> factories =
            mgr.getEngineFactories();
    for (ScriptEngineFactory factory : factories) {
        String engName = factory.getEngineName();
        String engVersion = factory.getEngineVersion();
        String langName = factory.getLanguageName();
        String langVersion = factory.getLanguageVersion();
        System.out.printf("Script Engine: %s (%s)\n", engName, engVersion);
        System.out.printf("\tLanguage: %s (%s)\n", langName, langVersion);
    }
}