将代码放在匿名括号中可以节省内存?
Enclose code in anonymous brackets saves memory?
我是初学者,出于某种原因,我喜欢努力节省内存。现在我觉得很好玩。
所以在这个问题中,我有一个匹配 kebab-case 单词的正则表达式,然后将它们变成驼峰式单词,我想知道这是否出现在给定的字符串中。我试过 Matcher.matches()
但我发现它只有在整个字符串匹配时才有效,所以我只能考虑编译正则表达式并使用 Matcher.find()
方法将布尔值放入变量中,但是我想将所有内容括在括号中以节省内存。
这是我的解决方案:
String regex = "(?:([\p{IsAlphabetic}]*)?(-[\p{IsAlphabetic}]+))+";
boolean hasSubSequence;
{
Matcher m = Pattern.compile(regex).matcher(identifier);
hasSubSequence = m.find();
}
if (hasSubSequence) {
Matcher kebabCaseMatches = Pattern.compile(regex).matcher(identifier);
while (kebabCaseMatches.find()) {
String currentOccurence = kebabCaseMatches.group();
while (currentOccurence.contains("-")) {
currentOccurence = currentOccurence.replaceFirst("-[\p{IsAlphabetic}]", Character.toString(Character.toUpperCase(currentOccurence.charAt(currentOccurence.indexOf("-") + 1))));
}
// "identifier" is the function's argument
identifier = identifier.replaceFirst(regex, currentOccurence);
}
}
这真的节省内存吗?
您可以在声明 regex
(static final?)的地方编译模式一次:将节省速度和许多实例。括号是巫术。
我是初学者,出于某种原因,我喜欢努力节省内存。现在我觉得很好玩。
所以在这个问题中,我有一个匹配 kebab-case 单词的正则表达式,然后将它们变成驼峰式单词,我想知道这是否出现在给定的字符串中。我试过 Matcher.matches()
但我发现它只有在整个字符串匹配时才有效,所以我只能考虑编译正则表达式并使用 Matcher.find()
方法将布尔值放入变量中,但是我想将所有内容括在括号中以节省内存。
这是我的解决方案:
String regex = "(?:([\p{IsAlphabetic}]*)?(-[\p{IsAlphabetic}]+))+";
boolean hasSubSequence;
{
Matcher m = Pattern.compile(regex).matcher(identifier);
hasSubSequence = m.find();
}
if (hasSubSequence) {
Matcher kebabCaseMatches = Pattern.compile(regex).matcher(identifier);
while (kebabCaseMatches.find()) {
String currentOccurence = kebabCaseMatches.group();
while (currentOccurence.contains("-")) {
currentOccurence = currentOccurence.replaceFirst("-[\p{IsAlphabetic}]", Character.toString(Character.toUpperCase(currentOccurence.charAt(currentOccurence.indexOf("-") + 1))));
}
// "identifier" is the function's argument
identifier = identifier.replaceFirst(regex, currentOccurence);
}
}
这真的节省内存吗?
您可以在声明 regex
(static final?)的地方编译模式一次:将节省速度和许多实例。括号是巫术。