gpt4 book ai didi

java - StringSubstitutor 支持大小写转换

转载 作者:行者123 更新时间:2023-11-30 06:04:48 26 4
gpt4 key购买 nike

我正在使用StringSubstitutor按照用户定义的模板完成字符串,例如“I program in ${language}”。

Map valuesMap = HashMap();
valuesMap.put("language", "Java");
String templateString = "I program in ${language}.";
StrSubstitutor sub = new StrSubstitutor(valuesMap);
String resolvedString = sub.replace(templateString);

给出“我用Java编程”。

这很好用,但有时模板需要包含替换变量的一些转换,最常见的是转换其大小写。我真正想做的是允许“我用 ${language:upper} 编程”或“我用 ${upper(language)} 编程”这样的模式,这样上面的结果将是“我用 ${language:upper} 编程”在JAVA中”

所以我的问题是:

  1. StringSubstitutor已经支持这个(如果是的话,语法是什么)?;否则
  2. 有没有办法在StringSubstitutor之上构建来支持此功能?或
  3. 还有其他库可以实现我想要的功能吗?

最佳答案

这应该有效:

valuesMap.put("language:lower", "java");
valuesMap.put("language:upper", "JAVA");

您可以编写一个函数来确保将这两个变体放入 HashMap 中。

void put(HashMap hashMap, String key, String value) {
hashMap.put(key + ":lower", value.toLowerCase());
hashMap.put(key + ":upper", value.toUpperCase());
}

您还可以扩展 HashMap,如下所示:

class MyHashMap extends HashMap {
@Override
public Object put(Object key, Object value) {
String strKey = (String)key;
String strValue = (String)value;
super.put(strKey + ":lower", strValue.toLowerCase());
super.put(strKey + ":upper", strValue.toUpperCase());
return strKey;
}
}

然后像这样使用它:

public static void main(String[] args) {
MyHashMap myHashMap = new MyHashMap();
myHashMap.put("test", "test");
System.out.println(myHashMap.get("test:lower"));
System.out.println(myHashMap.get("test:upper"));
}

关于java - StringSubstitutor 支持大小写转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51565886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com