我想找到一种有效的方法(不扫描字符串 10,000 次,或者创建大量中间字符串来保存临时结果,或者字符串抨击等)来编写一个接受字符串并确定它是否符合以下标准的方法:
- 长度至少为 2 个字符
- 第一个字符是大写的
- 第一个字符后的剩余子字符串至少包含 1 个小写字符
到目前为止,这是我的尝试:
private boolean isInProperForm(final String token) {
if(token.length() < 2)
return false;
char firstChar = token.charAt(0);
String restOfToken = token.substring(1);
String firstCharAsString = firstChar + "";
String firstCharStrToUpper = firstCharAsString.toUpperCase();
// TODO: Giving up because this already seems way too complicated/inefficient.
// Ignore the '&& true' clause - left it there as a placeholder so it wouldn't give a compile error.
if(firstCharStrToUpper.equals(firstCharAsString) && true)
return true;
// Presume false if we get here.
return false;
}
但正如你所看到的,我已经有 1 个char
和 3 个临时字符串,而且感觉有些不对劲。一定有更好的方法来写这个。这很重要,因为此方法将被调用数千次(对于文本文档中的每个标记化单词)。所以它真的需要高效。
提前致谢!