仅将字符串java中的第一个字母大写(Capitalize only the First Letter in a String java)

我一直在使用apache WordUtils来大写字符串中的每个第一个字母,但我只需要将某些单词的第一个字母大写,而不是全部。 这是我有的:

import org.apache.commons.lang.WordUtils;
public class FirstCapitalLetter {
public static void main(String[] args) {
String str = "STATEMENT OF ACCOUNT FOR THE PERIOD OF";
str = WordUtils.capitalizeFully(str);
System.out.println(str);
}
}

我的输出是:

Statement Of Account For The Period Of

我想要我的输出

Statement of Account for the Period of

我怎样才能做到这一点?

I have been using apache WordUtils to capitalize every first letter in a String, but I need only the first letter of certain words to be capitalized and not all of them. Here is what I have:
import org.apache.commons.lang.WordUtils;
public class FirstCapitalLetter {
public static void main(String[] args) {
String str = "STATEMENT OF ACCOUNT FOR THE PERIOD OF";
str = WordUtils.capitalizeFully(str);
System.out.println(str);
}
}
My Output is:
Statement Of Account For The Period Of
I want my output to be
Statement of Account for the Period of
How can I achieve this?

2020-02-10 15:02

满意答案

1)创建一组你不想大写的字符串(一组例外):

Set doNotCapitalize = new HashSet<>();
doNotCapitalize.add("the");
doNotCapitalize.add("of");
doNotCapitalize.add("for");
...

2)用空格分割字符串

String[] words = "STATEMENT OF ACCOUNT FOR THE PERIOD OF".split(" ");

3)遍历数组,仅将那些不在异常集中的单词大写:

StringBuilder builder = new StringBuilder();
for(String word : words){
String lower = word.toLowerCase();
if(doNotCapitalize.contains(lower){
builder.append(lower).append(" ");
}
else{
builder.append(WordUtils.capitalizeFully(lower)).append(" ");
}
}
String finalString = builder.toString();
1) Create a set of String you do not want to capitalize (a set of exceptions):
Set doNotCapitalize = new HashSet<>();
doNotCapitalize.add("the");
doNotCapitalize.add("of");
doNotCapitalize.add("for");
...
2) Split the string by spaces
String[] words = "STATEMENT OF ACCOUNT FOR THE PERIOD OF".split(" ");
3) Iterate through the array, capitalizing only those words that are not in the set of exceptions:
StringBuilder builder = new StringBuilder();
for(String word : words){
String lower = word.toLowerCase();
if(doNotCapitalize.contains(lower){
builder.append(lower).append(" ");
}
else{
builder.append(WordUtils.capitalizeFully(lower)).append(" ");
}
}
String finalString = builder.toString();

2012-12-13

相关问答

如果你只想大写一个名为input的字符串的第一个字母,并将其余的单独留下:

String output = input.substring(0, 1).toUpperCase() + input.substring(1);

现在output会有你想要的。 在使用之前,检查您的input是否至少有一个字符长,否则会出现异常。 If you only want to capitalize the first letter of a string named input and leave the r...

看看ACL WordUtils 。 WordUtils.capitalize("your string") == "Your String"

Have a look at ACL WordUtils. WordUtils.capitalize("your string") == "Your String"

如何在剩余字符串上的第一个char和ToLower上使用ToUpper ? string after = char.ToUpper(before.First()) + before.Substring(1).ToLower();

What about using ToUpper on the first char and ToLower on the remaining string? string after = char.ToUpper(before.First()) + before.Su...

org.apache.commons.lang3.text的WordUtils类有一个静态的capitalizeFully方法, WordUtils您的需要。 你需要在类路径中使用commons lang3 jar。 import org.apache.commons.lang3.text.WordUtils;

WordUtils.capitalizeFully(input);

The WordUtils class from org.apache.commons.lang3.text has...

这适用于单词,但也适用于短语 function transform(phrase)

{ var i,last,letters,words=phrase.split(/\s+/);
for(i=0;i
{ letters=words[i].split('');
last=letters.length-1;
letters[0]=letters[0].charCodeAt(0)<122?String.fromCharCode(letters[...

如果你打算将第一个字母大写,保持其他字母不变(即"NFL"保持为"NFL" ,而不是"Nfl" ),那么:

favorite_sport = gets.chomp.sub(/./, &:upcase)
...
If your intention is to capitalize the first letter keeping the other letters intact (i.e., "NFL" stays to be "NFL", and does not become "Nfl"), ...
它是{{ucfirst:string}} 。 有关所有内置解析器函数的信息,请参阅https://www.mediawiki.org/wiki/Help:Magic_words 。 It's {{ucfirst:string}}. See https://www.mediawiki.org/wiki/Help:Magic_words for information on all built-in parser functions.
尝试这个: int length = s.length();
if (length <= 1) {
return s;
} else {
return s.charAt(length - 1) + s.substring(1, length - 1) + s.charAt(0);
}

区别是s.charAt(length - 1) 。 请记住,字符串是零索引的,因此最后一个字符是s.charAt(length - 1) 。 Try this: int length = s.le...

1)创建一组你不想大写的字符串(一组例外): Set doNotCapitalize = new HashSet<>();

doNotCapitalize.add("the");
doNotCapitalize.add("of");
doNotCapitalize.add("for");
...

2)用空格分割字符串 String[] words = "STATEMENT OF ACCOUNT FOR THE PERIOD OF".split(" ");

3)遍历数组,仅将那些...

Encoded Love-letter Time Limit : 1000/1000ms (Java/

...

B - Encoded Love-letter Time Limit:1000MS Memory

...

Java String类 字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提

...

Encoded Love-letter Time Limit: 1000/1000 MS (Java

...

今天遇见一个问题.不知道怎么解决. 如: 自己建立了一个文件read.txt 里面存放这样的 键值

...

命令格式: SET key value 把字符串值value存储到key中。如果存在此key,SE

...

Java 获取字符串中第N次出现的字符位置的背景:截取字符串的时候,大家应该都是str.substri

...

相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志

...

查jdk的api你可以发现split的参数是正则表达式,如果你直接使用.或|来切分,是不对的

解决方案

...

JDK之前,switch条件表达只能是与整型兼容的类型(char,byte,short,int,Cha

...

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定