字符串示例
one thousand only
two hundred
twenty
seven
我如何改变一个大写字母的字符串的第一个字符,而不改变任何其他字母的情况?
更改之后应该是:
One thousand only
Two hundred
Twenty
Seven
注意:我不想使用apache.commons.lang.WordUtils来做这件事。
字符串示例
one thousand only
two hundred
twenty
seven
我如何改变一个大写字母的字符串的第一个字符,而不改变任何其他字母的情况?
更改之后应该是:
One thousand only
Two hundred
Twenty
Seven
注意:我不想使用apache.commons.lang.WordUtils来做这件事。
当前回答
另外,Spring Framework中还有org.springframework.util.StringUtils:
StringUtils.capitalize(str);
其他回答
String sentence = "ToDAY WeAthEr GREat";
public static String upperCaseWords(String sentence) {
String words[] = sentence.replaceAll("\\s+", " ").trim().split(" ");
String newSentence = "";
for (String word : words) {
for (int i = 0; i < word.length(); i++)
newSentence = newSentence + ((i == 0) ? word.substring(i, i + 1).toUpperCase():
(i != word.length() - 1) ? word.substring(i, i + 1).toLowerCase() : word.substring(i, i + 1).toLowerCase().toLowerCase() + " ");
}
return newSentence;
}
//Today Weather Great
使用StringTokenizer类的示例:
String st = " hello all students";
String st1;
char f;
String fs="";
StringTokenizer a= new StringTokenizer(st);
while(a.hasMoreTokens()){
st1=a.nextToken();
f=Character.toUpperCase(st1.charAt(0));
fs+=f+ st1.substring(1);
System.out.println(fs);
}
即使是“简单”的代码,我也会使用库。问题不是代码本身,而是已经存在的覆盖例外情况的测试用例。这可以是null,空字符串,其他语言中的字符串。
文字操作部分已经从Apache Commons Lang中移除。它现在被放置在Apache Commons Text中。通过https://search.maven.org/artifact/org.apache.commons/commons-text获取。
你可以使用WordUtils。大写(字符串str)从Apache公共文本。它比你想要的更强大。它也可以大写full(例如,固定“oNe thousand only”)。
由于它适用于完整的文本,所以必须告诉它只大写第一个单词。
WordUtils.capitalize("one thousand only", new char[0]);
完整的JUnit类,使发挥功能:
package io.github.koppor;
import org.apache.commons.text.WordUtils;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class AppTest {
@Test
void test() {
assertEquals("One thousand only", WordUtils.capitalize("one thousand only", new char[0]));
}
}
1. 使用字符串的substring()方法
public static String capitalize(String str) {
if(str== null || str.isEmpty()) {
return str;
}
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
现在只需调用capitalize()方法将字符串的第一个字母转换为大写字母:
System.out.println(capitalize("stackoverflow")); // Stackoverflow
System.out.println(capitalize("heLLo")); // HeLLo
System.out.println(capitalize(null)); // null
2. Apache Commons Lang
Commons Lang中的StringUtils类提供了capitalize()方法,该方法也可用于此目的:
System.out.println(StringUtils.capitalize("apache commons")); // Apache commons
System.out.println(StringUtils.capitalize("heLLO")); // HeLLO
System.out.println(StringUtils.uncapitalize(null)); // null
将以下依赖项添加到pom.xml文件中(仅适用于Maven):
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
下面是一篇详细解释这两种方法的文章。
实际上,在这种情况下,如果避免使用+运算符并使用concat(),您将获得最佳性能。它是合并两个字符串的最佳选择(但不太适合合并很多字符串)。在这种情况下,代码看起来是这样的:
String output = input.substring(0, 1).toUpperCase().concat(input.substring(1));