Rascal:将定义转换为驼峰式
Rascal: Convert define to camelcase
我想将 c 风格的定义名称转换为驼峰式。
示例:BLA_BLA -> blaBla
我创建了以下函数:
private str camelCaseName(n) {
rVal = n;
if (contains(rVal, "_")) {
rVal = toLowerCase(rVal);
for (pos <- findAll(rVal, "_")) {
up = toUpperCase(stringChar(charAt(rVal, pos + 1)));
charList = chars(rVal);
charList = delete(charList, pos + 1);
charList = insertAt(charList, pos + 1, charAt(up, 0));
rVal = stringChars(charList);
}
// rVal = replaceAll(rVal, "_", "");
}
return rVal;
}
这很适合改变大小写。但是,如果我取消对 replaceAll 的注释,则使用字符串的调用会报告“Expected str, but got tuple[value,value,value]”。
我想有更简单的方法来获得此功能。
我不确定 replaceAll
函数出了什么问题,但我会在这段代码上尝试使用静态检查器并阅读它的错误消息。
函数的另一种写法:
private str camelCaseName(str n) {
words = split("_", toLowerCase(n));
return "<words[0]><for (w <- words[1..]) {><capitalize(w)><}>";
}
- 我在参数中添加了一个类型
n
,这是必须的。
- 字符串模板是打印字符串内容的好方法。
split
函数很方便;它将字符串拆分为列表元素。
capitalize
函数将单词首字母大写
我想将 c 风格的定义名称转换为驼峰式。 示例:BLA_BLA -> blaBla
我创建了以下函数:
private str camelCaseName(n) {
rVal = n;
if (contains(rVal, "_")) {
rVal = toLowerCase(rVal);
for (pos <- findAll(rVal, "_")) {
up = toUpperCase(stringChar(charAt(rVal, pos + 1)));
charList = chars(rVal);
charList = delete(charList, pos + 1);
charList = insertAt(charList, pos + 1, charAt(up, 0));
rVal = stringChars(charList);
}
// rVal = replaceAll(rVal, "_", "");
}
return rVal;
}
这很适合改变大小写。但是,如果我取消对 replaceAll 的注释,则使用字符串的调用会报告“Expected str, but got tuple[value,value,value]”。
我想有更简单的方法来获得此功能。
我不确定 replaceAll
函数出了什么问题,但我会在这段代码上尝试使用静态检查器并阅读它的错误消息。
函数的另一种写法:
private str camelCaseName(str n) {
words = split("_", toLowerCase(n));
return "<words[0]><for (w <- words[1..]) {><capitalize(w)><}>";
}
- 我在参数中添加了一个类型
n
,这是必须的。 - 字符串模板是打印字符串内容的好方法。
split
函数很方便;它将字符串拆分为列表元素。capitalize
函数将单词首字母大写