使用字符串模板将首字母转换为大写

4
我正在使用String模板文件来生成Java文件。为此,我使用了ANTLR。下面是其中一个字符串模板文件的代码:
package framework;
public abstract class  Listener$GUIdriver.name$  {  
 $GUIdriver.commands:{ command |   
     public abstract void onNew$command.name;format="capital"$Command
           ($command.allParameter:{ param |   $param.type.name$ newValue};separator=" , "$);   
          }; separator="\n"$
$GUIdriver.allDataAccess:{ dataAccess | 
  public abstract void onNew$dataAccess.dataAccessName;format="capital"$Request(String request); 
     }; separator="\n"$
 } 

但它不会产生 format="capital" 的效果。如何融合这些变化?我需要包含任何包或文件吗?我对String Template和ANTLR不熟悉。

2个回答

1

你想要使用的格式字符串是“cap”

format="cap"

不过,你需要先注册StringRenderer :-)

stGroup.registerRenderer(String.class, new StringRenderer());

更多细节

这是一个示例组文件,testGroup.stg

group testGroup;

test(text) ::= <<
<text; format="cap">
>>

这里是使用它的示例:

import org.stringtemplate.v4.*;

public class Test {

    public static void main(String[] args) {
        STGroup stGroup = new STGroupFile("testGroup.stg");
        ST st = stGroup.getInstanceOf("test");
        stGroup.registerRenderer(String.class, new StringRenderer());
        st.add("text", "helloWorld"); // note lower case 'h'
        System.out.println(st.render());
    }
}

这将呈现为:

HelloWorld


你能否演示一下“Hello World”字符串模板应用程序,向我展示如何使用它? - user5182542
当然,看看我的更新答案。更多信息请查看ST文档 - Andy Stabler
我已经通过注册StringRendere对String模板文件进行了更改。但问题是我无法将double更改为Double,我可以将tempvalue更改为Tempvalue。你能告诉我原因吗? - user5182542

0
method(item) ::= <<
<item.name; format="cap">Value
>> 

请考虑在您的代码中添加注释,以改善此答案。 - Eric Hauenstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接