是否有一个内置于Java中的函数可以将字符串中每个单词的第一个字符大写,而不会影响其他字符?
示例:
jon skeet
- > Jon Skeet
miles o'Brien
- > Miles O'Brien
(B仍然是资本,这排除了标题案例)old mcdonald
- > Old Mcdonald
* *(Old McDonald
也可以找到,但我不认为它很聪明。)
快速查看Java String Documentation仅显示toUpperCase()
和toLowerCase()
,这当然不会提供所需的行为。当然,谷歌的结果由这两个功能主导。它看起来像一个必须已经发明的轮子,所以它可以不会受到伤害,所以我可以在将来使用它。
答案 0 :(得分:688)
WordUtils.capitalize(str)
(来自apache commons-text)
(注意:如果您需要"fOO BAr"
成为"Foo Bar"
,请改用capitalizeFully(..)
答案 1 :(得分:223)
如果你只是担心第一个单词的首字母大写:
private String capitalize(final String line) {
return Character.toUpperCase(line.charAt(0)) + line.substring(1);
}
答案 2 :(得分:62)
以下方法将所有字母转换为大写/小写字母,具体取决于它们在空格或其他特殊字符附近的位置。
public static String capitalizeString(String string) {
char[] chars = string.toLowerCase().toCharArray();
boolean found = false;
for (int i = 0; i < chars.length; i++) {
if (!found && Character.isLetter(chars[i])) {
chars[i] = Character.toUpperCase(chars[i]);
found = true;
} else if (Character.isWhitespace(chars[i]) || chars[i]=='.' || chars[i]=='\'') { // You can add other chars here
found = false;
}
}
return String.valueOf(chars);
}
答案 3 :(得分:34)
尝试这种非常简单的方式
例子givenString =“ram是好孩子”
public static String toTitleCase(String givenString) {
String[] arr = givenString.split(" ");
StringBuffer sb = new StringBuffer();
for (int i = 0; i < arr.length; i++) {
sb.append(Character.toUpperCase(arr[i].charAt(0)))
.append(arr[i].substring(1)).append(" ");
}
return sb.toString().trim();
}
输出将是:Ram Is Good Boy
答案 4 :(得分:16)
我写了一个小类来大写字符串中的所有单词。
可选multiple delimiters
,每个都有其行为(在处理O'Brian
之类的案例之前,之后或两者之间大写;
可选Locale
;
不要与Surrogate Pairs
打破。
输出:
==================================== SIMPLE USAGE ==================================== Source: cApItAlIzE this string after WHITE SPACES Output: Capitalize This String After White Spaces ==================================== SINGLE CUSTOM-DELIMITER USAGE ==================================== Source: capitalize this string ONLY before'and''after'''APEX Output: Capitalize this string only beforE'AnD''AfteR'''Apex ==================================== MULTIPLE CUSTOM-DELIMITER USAGE ==================================== Source: capitalize this string AFTER SPACES, BEFORE'APEX, and #AFTER AND BEFORE# NUMBER SIGN (#) Output: Capitalize This String After Spaces, BeforE'apex, And #After And BeforE# Number Sign (#) ==================================== SIMPLE USAGE WITH CUSTOM LOCALE ==================================== Source: Uniforming the first and last vowels (different kind of 'i's) of the Turkish word D[İ]YARBAK[I]R (DİYARBAKIR) Output: Uniforming The First And Last Vowels (different Kind Of 'i's) Of The Turkish Word D[i]yarbak[i]r (diyarbakir) ==================================== SIMPLE USAGE WITH A SURROGATE PAIR ==================================== Source: ab c de à Output: Ab c De À
注意:首字母将始终大写(如果您不想要,请编辑来源)。
请分享您的意见并帮助我找到错误或改进代码...
代码:
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class WordsCapitalizer {
public static String capitalizeEveryWord(String source) {
return capitalizeEveryWord(source,null,null);
}
public static String capitalizeEveryWord(String source, Locale locale) {
return capitalizeEveryWord(source,null,locale);
}
public static String capitalizeEveryWord(String source, List<Delimiter> delimiters, Locale locale) {
char[] chars;
if (delimiters == null || delimiters.size() == 0)
delimiters = getDefaultDelimiters();
// If Locale specified, i18n toLowerCase is executed, to handle specific behaviors (eg. Turkish dotted and dotless 'i')
if (locale!=null)
chars = source.toLowerCase(locale).toCharArray();
else
chars = source.toLowerCase().toCharArray();
// First charachter ALWAYS capitalized, if it is a Letter.
if (chars.length>0 && Character.isLetter(chars[0]) && !isSurrogate(chars[0])){
chars[0] = Character.toUpperCase(chars[0]);
}
for (int i = 0; i < chars.length; i++) {
if (!isSurrogate(chars[i]) && !Character.isLetter(chars[i])) {
// Current char is not a Letter; gonna check if it is a delimitrer.
for (Delimiter delimiter : delimiters){
if (delimiter.getDelimiter()==chars[i]){
// Delimiter found, applying rules...
if (delimiter.capitalizeBefore() && i>0
&& Character.isLetter(chars[i-1]) && !isSurrogate(chars[i-1]))
{ // previous character is a Letter and I have to capitalize it
chars[i-1] = Character.toUpperCase(chars[i-1]);
}
if (delimiter.capitalizeAfter() && i<chars.length-1
&& Character.isLetter(chars[i+1]) && !isSurrogate(chars[i+1]))
{ // next character is a Letter and I have to capitalize it
chars[i+1] = Character.toUpperCase(chars[i+1]);
}
break;
}
}
}
}
return String.valueOf(chars);
}
private static boolean isSurrogate(char chr){
// Check if the current character is part of an UTF-16 Surrogate Pair.
// Note: not validating the pair, just used to bypass (any found part of) it.
return (Character.isHighSurrogate(chr) || Character.isLowSurrogate(chr));
}
private static List<Delimiter> getDefaultDelimiters(){
// If no delimiter specified, "Capitalize after space" rule is set by default.
List<Delimiter> delimiters = new ArrayList<Delimiter>();
delimiters.add(new Delimiter(Behavior.CAPITALIZE_AFTER_MARKER, ' '));
return delimiters;
}
public static class Delimiter {
private Behavior behavior;
private char delimiter;
public Delimiter(Behavior behavior, char delimiter) {
super();
this.behavior = behavior;
this.delimiter = delimiter;
}
public boolean capitalizeBefore(){
return (behavior.equals(Behavior.CAPITALIZE_BEFORE_MARKER)
|| behavior.equals(Behavior.CAPITALIZE_BEFORE_AND_AFTER_MARKER));
}
public boolean capitalizeAfter(){
return (behavior.equals(Behavior.CAPITALIZE_AFTER_MARKER)
|| behavior.equals(Behavior.CAPITALIZE_BEFORE_AND_AFTER_MARKER));
}
public char getDelimiter() {
return delimiter;
}
}
public static enum Behavior {
CAPITALIZE_AFTER_MARKER(0),
CAPITALIZE_BEFORE_MARKER(1),
CAPITALIZE_BEFORE_AND_AFTER_MARKER(2);
private int value;
private Behavior(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
答案 5 :(得分:15)
String toBeCapped = "i want this sentence capitalized";
String[] tokens = toBeCapped.split("\\s");
toBeCapped = "";
for(int i = 0; i < tokens.length; i++){
char capLetter = Character.toUpperCase(tokens[i].charAt(0));
toBeCapped += " " + capLetter + tokens[i].substring(1);
}
toBeCapped = toBeCapped.trim();
答案 6 :(得分:10)
使用org.apache.commons.lang.StringUtils
非常简单。
capitalizeStr = StringUtils.capitalize(str);
答案 7 :(得分:9)
我在Java 8中提出了一个更具可读性的解决方案。
public String firstLetterCapitalWithSingleSpace(final String words) {
return Stream.of(words.trim().split("\\s"))
.filter(word -> word.length() > 0)
.map(word -> word.substring(0, 1).toUpperCase() + word.substring(1))
.collect(Collectors.joining(" "));
}
此解决方案的要点可在此处找到:https://gist.github.com/Hylke1982/166a792313c5e2df9d31
答案 8 :(得分:6)
使用这个简单的代码:
String example="hello";
example=example.substring(0,1).toUpperCase()+example.substring(1, example.length());
System.out.println(example);
结果:您好
答案 9 :(得分:5)
我使用以下功能。我认为它的性能更快。
public static String capitalize(String text){
String c = (text != null)? text.trim() : "";
String[] words = c.split(" ");
String result = "";
for(String w : words){
result += (w.length() > 1? w.substring(0, 1).toUpperCase(Locale.US) + w.substring(1, w.length()).toLowerCase(Locale.US) : w) + " ";
}
return result.trim();
}
答案 10 :(得分:4)
public static String toTitleCase(String word){
return Character.toUpperCase(word.charAt(0)) + word.substring(1);
}
public static void main(String[] args){
String phrase = "this is to be title cased";
String[] splitPhrase = phrase.split(" ");
String result = "";
for(String word: splitPhrase){
result += toTitleCase(word) + " ";
}
System.out.println(result.trim());
}
答案 11 :(得分:4)
如果您需要大写标题,这可能很有用。它将" "
分隔的每个子字符串大写,但"a"
或"the"
等指定字符串除外。我还没有跑,因为它已经晚了,但应该没问题。一次使用Apache Commons StringUtils.join()
。如果您愿意,可以用简单的循环替换它。
private static String capitalize(String string) {
if (string == null) return null;
String[] wordArray = string.split(" "); // Split string to analyze word by word.
int i = 0;
lowercase:
for (String word : wordArray) {
if (word != wordArray[0]) { // First word always in capital
String [] lowercaseWords = {"a", "an", "as", "and", "although", "at", "because", "but", "by", "for", "in", "nor", "of", "on", "or", "so", "the", "to", "up", "yet"};
for (String word2 : lowercaseWords) {
if (word.equals(word2)) {
wordArray[i] = word;
i++;
continue lowercase;
}
}
}
char[] characterArray = word.toCharArray();
characterArray[0] = Character.toTitleCase(characterArray[0]);
wordArray[i] = new String(characterArray);
i++;
}
return StringUtils.join(wordArray, " "); // Re-join string
}
答案 12 :(得分:4)
使用Split方法将字符串拆分为单词,然后使用内置字符串函数将每个单词大写,然后一起追加。
伪代码(ish)
string = "the sentence you want to apply caps to";
words = string.split(" ")
string = ""
for(String w: words)
//This line is an easy way to capitalize a word
word = word.toUpperCase().replace(word.substring(1), word.substring(1).toLowerCase())
string += word
最后字符串看起来像 “你要申请上诉的句子”
答案 13 :(得分:3)
这是一个简单的功能
public static String capEachWord(String source){
String result = "";
String[] splitString = source.split(" ");
for(String target : splitString){
result += Character.toUpperCase(target.charAt(0))
+ target.substring(1) + " ";
}
return result.trim();
}
答案 14 :(得分:3)
您可以像这样使用String::replceAll
:
public static void upperCaseAllFirstCharacter(String text) {
String regex = "\\b(.)(.*?)\\b";
String result = Pattern.compile(regex).matcher(text).replaceAll(
matche -> matche.group(1).toUpperCase() + matche.group(2)
);
System.out.println(result);
}
示例:
upperCaseAllFirstCharacter("hello this is Just a test");
输出
Hello This Is Just A Test
答案 15 :(得分:3)
我决定再添加一个解决方案来大写字符串中的单词:
功能:
public static String capitalize(String string) {
final int sl = string.length();
final StringBuilder sb = new StringBuilder(sl);
boolean lod = false;
for(int s = 0; s < sl; s++) {
final int cp = string.codePointAt(s);
sb.appendCodePoint(lod ? Character.toLowerCase(cp) : Character.toUpperCase(cp));
lod = Character.isLetterOrDigit(cp);
if(!Character.isBmpCodePoint(cp)) s++;
}
return sb.toString();
}
示例电话:
System.out.println(capitalize("An à la carte StRiNg. Surrogate pairs: ."));
结果:
An À La Carte String. Surrogate Pairs: .
答案 16 :(得分:3)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the sentence : ");
try
{
String str = br.readLine();
char[] str1 = new char[str.length()];
for(int i=0; i<str.length(); i++)
{
str1[i] = Character.toLowerCase(str.charAt(i));
}
str1[0] = Character.toUpperCase(str1[0]);
for(int i=0;i<str.length();i++)
{
if(str1[i] == ' ')
{
str1[i+1] = Character.toUpperCase(str1[i+1]);
}
System.out.print(str1[i]);
}
}
catch(Exception e)
{
System.err.println("Error: " + e.getMessage());
}
答案 17 :(得分:3)
有很多方法可以将第一个单词的第一个字母转换为大写。我有个主意。这很简单:
public String capitalize(String str){
/* The first thing we do is remove whitespace from string */
String c = str.replaceAll("\\s+", " ");
String s = c.trim();
String l = "";
for(int i = 0; i < s.length(); i++){
if(i == 0){ /* Uppercase the first letter in strings */
l += s.toUpperCase().charAt(i);
i++; /* To i = i + 1 because we don't need to add
value i = 0 into string l */
}
l += s.charAt(i);
if(s.charAt(i) == 32){ /* If we meet whitespace (32 in ASCII Code is whitespace) */
l += s.toUpperCase().charAt(i+1); /* Uppercase the letter after whitespace */
i++; /* Yo i = i + 1 because we don't need to add
value whitespace into string l */
}
}
return l;
}
答案 18 :(得分:2)
使用:
String text = "jon skeet, miles o'brien, old mcdonald";
Pattern pattern = Pattern.compile("\\b([a-z])([\\w]*)");
Matcher matcher = pattern.matcher(text);
StringBuffer buffer = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(buffer, matcher.group(1).toUpperCase() + matcher.group(2));
}
String capitalized = matcher.appendTail(buffer).toString();
System.out.println(capitalized);
答案 19 :(得分:2)
这只是另一种方式:
private String capitalize(String line)
{
StringTokenizer token =new StringTokenizer(line);
String CapLine="";
while(token.hasMoreTokens())
{
String tok = token.nextToken().toString();
CapLine += Character.toUpperCase(tok.charAt(0))+ tok.substring(1)+" ";
}
return CapLine.substring(0,CapLine.length()-1);
}
答案 20 :(得分:2)
intiCap的可重用方法:
public class YarlagaddaSireeshTest{
public static void main(String[] args) {
String FinalStringIs = "";
String testNames = "sireesh yarlagadda test";
String[] name = testNames.split("\\s");
for(String nameIs :name){
FinalStringIs += getIntiCapString(nameIs) + ",";
}
System.out.println("Final Result "+ FinalStringIs);
}
public static String getIntiCapString(String param) {
if(param != null && param.length()>0){
char[] charArray = param.toCharArray();
charArray[0] = Character.toUpperCase(charArray[0]);
return new String(charArray);
}
else {
return "";
}
}
}
答案 21 :(得分:2)
这是我的解决方案。
今晚我遇到了这个问题并决定搜索它。我找到了Neelam Singh的答案,几乎就在那里,所以我决定解决问题(打破空字符串)并导致系统崩溃。
您要查找的方法在下面命名为capString(String s)
。
它变成了#34;它只在这里凌晨5点&#34;进入&#34;它只在这里凌晨5点&#34;。
代码评论很好,所以尽情享受。
package com.lincolnwdaniel.interactivestory.model;
public class StringS {
/**
* @param s is a string of any length, ideally only one word
* @return a capitalized string.
* only the first letter of the string is made to uppercase
*/
public static String capSingleWord(String s) {
if(s.isEmpty() || s.length()<2) {
return Character.toUpperCase(s.charAt(0))+"";
}
else {
return Character.toUpperCase(s.charAt(0)) + s.substring(1);
}
}
/**
*
* @param s is a string of any length
* @return a title cased string.
* All first letter of each word is made to uppercase
*/
public static String capString(String s) {
// Check if the string is empty, if it is, return it immediately
if(s.isEmpty()){
return s;
}
// Split string on space and create array of words
String[] arr = s.split(" ");
// Create a string buffer to hold the new capitalized string
StringBuffer sb = new StringBuffer();
// Check if the array is empty (would be caused by the passage of s as an empty string [i.g "" or " "],
// If it is, return the original string immediately
if( arr.length < 1 ){
return s;
}
for (int i = 0; i < arr.length; i++) {
sb.append(Character.toUpperCase(arr[i].charAt(0)))
.append(arr[i].substring(1)).append(" ");
}
return sb.toString().trim();
}
}
答案 22 :(得分:2)
package com.test;
/**
* @author Prasanth Pillai
* @date 01-Feb-2012
* @description : Below is the test class details
*
* inputs a String from a user. Expect the String to contain spaces and alphanumeric characters only.
* capitalizes all first letters of the words in the given String.
* preserves all other characters (including spaces) in the String.
* displays the result to the user.
*
* Approach : I have followed a simple approach. However there are many string utilities available
* for the same purpose. Example : WordUtils.capitalize(str) (from apache commons-lang)
*
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) throws IOException{
System.out.println("Input String :\n");
InputStreamReader converter = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(converter);
String inputString = in.readLine();
int length = inputString.length();
StringBuffer newStr = new StringBuffer(0);
int i = 0;
int k = 0;
/* This is a simple approach
* step 1: scan through the input string
* step 2: capitalize the first letter of each word in string
* The integer k, is used as a value to determine whether the
* letter is the first letter in each word in the string.
*/
while( i < length){
if (Character.isLetter(inputString.charAt(i))){
if ( k == 0){
newStr = newStr.append(Character.toUpperCase(inputString.charAt(i)));
k = 2;
}//this else loop is to avoid repeatation of the first letter in output string
else {
newStr = newStr.append(inputString.charAt(i));
}
} // for the letters which are not first letter, simply append to the output string.
else {
newStr = newStr.append(inputString.charAt(i));
k=0;
}
i+=1;
}
System.out.println("new String ->"+newStr);
}
}
答案 23 :(得分:1)
public static String capitalizeAll(String str) {
if (str == null || str.isEmpty()) {
return str;
}
return Arrays.stream(str.split("\\s+"))
.map(t -> t.substring(0, 1).toUpperCase() + t.substring(1))
.collect(Collectors.joining(" "));
}
示例:
System.out.println(capitalizeAll("jon skeet")); // Jon Skeet
System.out.println(capitalizeAll("miles o'Brien")); // Miles O'Brien
System.out.println(capitalizeAll("old mcdonald")); // Old Mcdonald
System.out.println(capitalizeAll(null)); // null
对于foo bAR
至Foo Bar
,将map()
方法替换为以下内容:
.map(t -> t.substring(0, 1).toUpperCase() + t.substring(1).toLowerCase())
String.replaceAll()
(Java 9 +)ublic static String capitalizeAll(String str) {
if (str == null || str.isEmpty()) {
return str;
}
return Pattern.compile("\\b(.)(.*?)\\b")
.matcher(str)
.replaceAll(match -> match.group(1).toUpperCase() + match.group(2));
}
示例:
System.out.println(capitalizeAll("12 ways to learn java")); // 12 Ways To Learn Java
System.out.println(capitalizeAll("i am atta")); // I Am Atta
System.out.println(capitalizeAll(null)); // null
System.out.println(WordUtils.capitalize("love is everywhere")); // Love Is Everywhere
System.out.println(WordUtils.capitalize("sky, sky, blue sky!")); // Sky, Sky, Blue Sky!
System.out.println(WordUtils.capitalize(null)); // null
对于标题栏:
System.out.println(WordUtils.capitalizeFully("fOO bAR")); // Foo Bar
System.out.println(WordUtils.capitalizeFully("sKy is BLUE!")); // Sky Is Blue!
有关详细信息,请检出this tutorial。
答案 24 :(得分:1)
Public Class Form1
Private Sub cell_gotfocus(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
Dim CurrentCombo = TryCast(e.Control, ComboBox)
If Not CurrentCombo Is Nothing Then
RemoveHandler CurrentCombo.GotFocus, AddressOf Combo_Focus 'remove event handler so we don't accumulate multiples
AddHandler CurrentCombo.GotFocus, AddressOf Combo_Focus 'add eventhandler
End If
End Sub
Private Sub Combo_Focus()
Console.WriteLine("Got Focus")
Console.beep
End Sub
Private Sub Make_Readonly_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Make_Readonly.Click
DataGridView1.Rows(0).ReadOnly = True 'toggle readonly
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For y As Integer = 1 To 4 'add extra columns into datagrid
Dim cmb As New DataGridViewComboBoxColumn
cmb.HeaderText = "c" & DataGridView1.Columns.Count
cmb.Name = "c" & DataGridView1.Columns.Count
cmb.FlatStyle = FlatStyle.Flat
DataGridView1.Columns.Add(cmb)
Next
End Sub
End Class
答案 25 :(得分:1)
对于那些在MVC中使用Velocity的人,您可以使用the StringUtils class中的capitalizeFirstLetter()
方法。
答案 26 :(得分:1)
试试这个:
private String capitalizer(String word){
String[] words = word.split(" ");
StringBuilder sb = new StringBuilder();
if (words[0].length() > 0) {
sb.append(Character.toUpperCase(words[0].charAt(0)) + words[0].subSequence(1, words[0].length()).toString().toLowerCase());
for (int i = 1; i < words.length; i++) {
sb.append(" ");
sb.append(Character.toUpperCase(words[i].charAt(0)) + words[i].subSequence(1, words[i].length()).toString().toLowerCase());
}
}
return sb.toString();
}
答案 27 :(得分:1)
String s="hi dude i want apple";
s = s.replaceAll("\\s+"," ");
String[] split = s.split(" ");
s="";
for (int i = 0; i < split.length; i++) {
split[i]=Character.toUpperCase(split[i].charAt(0))+split[i].substring(1);
s+=split[i]+" ";
System.out.println(split[i]);
}
System.out.println(s);
答案 28 :(得分:1)
如果你更喜欢番石榴......
String myString = ...;
String capWords = Joiner.on(' ').join(Iterables.transform(Splitter.on(' ').omitEmptyStrings().split(myString), new Function<String, String>() {
public String apply(String input) {
return Character.toUpperCase(input.charAt(0)) + input.substring(1);
}
}));
答案 29 :(得分:1)
package corejava.string.intern;
import java.io.DataInputStream;
import java.util.ArrayList;
/*
* wap to accept only 3 sentences and convert first character of each word into upper case
*/
public class Accept3Lines_FirstCharUppercase {
static String line;
static String words[];
static ArrayList<String> list=new ArrayList<String>();
/**
* @param args
*/
public static void main(String[] args) throws java.lang.Exception{
DataInputStream read=new DataInputStream(System.in);
System.out.println("Enter only three sentences");
int i=0;
while((line=read.readLine())!=null){
method(line); //main logic of the code
if((i++)==2){
break;
}
}
display();
System.out.println("\n End of the program");
}
/*
* this will display all the elements in an array
*/
public static void display(){
for(String display:list){
System.out.println(display);
}
}
/*
* this divide the line of string into words
* and first char of the each word is converted to upper case
* and to an array list
*/
public static void method(String lineParam){
words=line.split("\\s");
for(String s:words){
String result=s.substring(0,1).toUpperCase()+s.substring(1);
list.add(result);
}
}
}
答案 30 :(得分:1)
这个适用于姓氏案件......
使用不同类型的分隔符,它保持相同的分隔符:
jean-frederic - &gt;让 - 弗雷德里克
jean frederic - &gt;让·弗雷德里克
该代码适用于GWT客户端。
public static String capitalize (String givenString) {
String Separateur = " ,.-;";
StringBuffer sb = new StringBuffer();
boolean ToCap = true;
for (int i = 0; i < givenString.length(); i++) {
if (ToCap)
sb.append(Character.toUpperCase(givenString.charAt(i)));
else
sb.append(Character.toLowerCase(givenString.charAt(i)));
if (Separateur.indexOf(givenString.charAt(i)) >=0)
ToCap = true;
else
ToCap = false;
}
return sb.toString().trim();
}
答案 31 :(得分:1)
简短而精确的方法如下:
String name = "test";
name = (name.length() != 0) ?name.toString().toLowerCase().substring(0,1).toUpperCase().concat(name.substring(1)): name;
-------------------- Output -------------------- Test T empty --------------------
如果您尝试将名称值更改为三个值,则无误地运行。没有错误。
答案 32 :(得分:0)
这里有一个lil程序,用于在父目录的每个子文件夹中将每个首字母大写。
private void capitalize(String string)
{
List<String> delimiters = new ArrayList<>();
delimiters.add(" ");
delimiters.add("_");
File folder = new File(string);
String name = folder.getName();
String[] characters = name.split("");
String newName = "";
boolean capitalizeNext = false;
for (int i = 0; i < characters.length; i++)
{
String character = characters[i];
if (capitalizeNext || i == 0)
{
newName += character.toUpperCase();
capitalizeNext = false;
}
else
{
if (delimiters.contains(character)) capitalizeNext = true;
newName += character;
}
}
folder.renameTo(new File(folder.getParent() + File.separator + newName));
}
答案 33 :(得分:0)
public static void main(String[] args) throws IOException {
String words = "this is a test";
System.out.println(Arrays.asList(words.split(" ")).stream().reduce("",(a, b)->(a + " " + b.substring(0, 1).toUpperCase() + b.substring(1))));
}
}
答案 34 :(得分:0)
我只想通过仅使用Java代码为该问题添加替代解决方案。 没有额外的库
public String Capitalize(String str) {
String tt = "";
String tempString = "";
String tempName = str.trim().toLowerCase();
String[] tempNameArr = tempName.split(" ");
System.out.println("The size is " + tempNameArr.length);
if (tempNameArr.length > 1) {
for (String t : tempNameArr) {
tt += Capitalize(t);
tt += " ";
}
tempString = tt;
} else {
tempString = tempName.replaceFirst(String.valueOf(tempName.charAt(0)), String.valueOf(tempName.charAt(0)).toUpperCase());
}
return tempString.trim();
}
答案 35 :(得分:0)
在这里我们追求完美的单词首字母大写
public static void main(String[] args) {
String input ="my name is ranjan";
String[] inputArr = input.split(" ");
for(String word : inputArr) {
System.out.println(word.substring(0, 1).toUpperCase()+word.substring(1,word.length()));
}
}
}
//输出:我的名字是Ranjan
答案 36 :(得分:0)
以下是同一问题的Kotlin版本:
fun capitalizeFirstLetterOfEveryWord(text: String): String
{
if (text.isEmpty() || text.isBlank())
{
return ""
}
if (text.length == 1)
{
return Character.toUpperCase(text[0]).toString()
}
val textArray = text.split(" ")
val stringBuilder = StringBuilder()
for ((index, item) in textArray.withIndex())
{
// If item is empty string, continue to next item
if (item.isEmpty())
{
continue
}
stringBuilder
.append(Character.toUpperCase(item[0]))
// If the item has only one character then continue to next item because we have already capitalized it.
if (item.length == 1)
{
continue
}
for (i in 1 until item.length)
{
stringBuilder
.append(Character.toLowerCase(item[i]))
}
if (index < textArray.lastIndex)
{
stringBuilder
.append(" ")
}
}
return stringBuilder.toString()
}
答案 37 :(得分:0)
我做了这个小类,可以用来使句子中的每个单词大写。如果不是空格,则可以更改字符串中的单词分隔符。
package com.ecnews.ecnews_v01.Helpers;
public class Capitalize {
String sentence;
String separator = " ";
public Capitalize(String sentence) {
this.sentence = sentence;
}
public void setSeparator(String separator) {
this.separator = separator;
}
public String getCapitalized() {
StringBuilder capitalized = new StringBuilder("");
for (String word : sentence.split(separator)) {
capitalized.append(separator+Character.toUpperCase(word.charAt(0)) + word.substring(1));
}
return capitalized.toString().trim();
}
}
示例:
String sourceName = new Capitalize("this is a test").getCapitalized();
sourceName将是“这是一个测试”
答案 38 :(得分:0)
这是我的另一种方式
StringBuilder str=new StringBuilder("pirai sudie test test");
str.setCharAt(0,Character.toUpperCase(str.charAt(0)));
for(int i=str.length()-1;i>=0;i--)
{
if(Character.isSpaceChar(str.charAt(i)))
str.setCharAt(i+1,Character.toUpperCase(str.charAt(i+1)));
}
System.out.println(str);
答案 39 :(得分:0)
您也可以像这样简单地完成操作,并保留所有加倍的,前导的,尾随的空格
public static String capitalizeWords(String text) {
StringBuilder sb = new StringBuilder();
if(text.length()>0){
sb.append(Character.toUpperCase(text.charAt(0)));
}
for (int i=1; i<text.length(); i++){
String chPrev = String.valueOf(text.charAt(i-1));
String ch = String.valueOf(text.charAt(i));
if(Objects.equals(chPrev, " ")){
sb.append(ch.toUpperCase());
}else {
sb.append(ch);
}
}
return sb.toString();
}
答案 40 :(得分:0)
以下是RxJava
解决问题的方法
String title = "this is a title";
StringBuilder stringBuilder = new StringBuilder();
Observable.fromArray(title.trim().split("\\s"))
.map(word -> word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase())
.toList()
.map(wordList -> {
for (String word : wordList) {
stringBuilder.append(word).append(" ");
}
return stringBuilder.toString();
})
.subscribe(result -> System.out.println(result));
我还不喜欢内部地图中的for循环。
答案 41 :(得分:0)
String text="hello";
StringBuffer sb=new StringBuffer();
char[] ch=text.toCharArray();
for(int i=0;i<ch.length;i++){
if(i==0){
sb.append(Character.toUpperCase(ch[i]));
}
else{
sb.append(ch[i]);
}
}
text=sb.toString();
System.out.println(text);
}
答案 42 :(得分:0)
s.toLowerCase().trim();
result += Character.toUpperCase(s.charAt(0));
result += s.substring(1, s.indexOf(" ") + 1);
s = s.substring(s.indexOf(" ") + 1);
do {
if (s.contains(" ")) {
result += " ";
result += Character.toUpperCase(s.charAt(0));
result += s.substring(1, s.indexOf(" "));
s = s.substring(s.indexOf(" ") + 1);
} else {
result += " ";
result += Character.toUpperCase(s.charAt(0));
result += s.substring(1);
break;
}
} while (true);
System.out.println(result);
答案 43 :(得分:0)
public void capitaliseFirstLetterOfEachWord()
{
String value="this will capitalise first character of each word of this string";
String[] wordSplit=value.split(" ");
StringBuilder sb=new StringBuilder();
for (int i=0;i<wordSplit.length;i++){
sb.append(wordSplit[i].substring(0,1).toUpperCase().
concat(wordSplit[i].substring(1)).concat(" "));
}
System.out.println(sb);
}
答案 44 :(得分:0)
我使用Raindrop-Library中的wordUppercase(String s)
。
因为这是我的库,所以这里是单一的方法:
/**
* Set set first letter from every word uppercase.
*
* @param s - The String wich you want to convert.
* @return The string where is the first letter of every word uppercase.
*/
public static String wordUppercase(String s){
String[] words = s.split(" ");
for (int i = 0; i < words.length; i++) words[i] = words[i].substring(0, 1).toUpperCase() + words[i].substring(1).toLowerCase();
return String.join(" ", words);
}
希望有所帮助:)
答案 45 :(得分:0)
由于没有人使用regexp,所以让我们用regexp来做。这个解决方案很有趣。 :)(更新:实际上我刚发现有一个regexp的答案,无论如何我想留下这个答案,因为它是更好看 :)):
public class Capitol
{
public static String now(String str)
{
StringBuffer b = new StringBuffer();
Pattern p = Pattern.compile("\\b(\\w){1}");
Matcher m = p.matcher(str);
while (m.find())
{
String s = m.group(1);
m.appendReplacement(b, s.toUpperCase());
}
m.appendTail(b);
return b.toString();
}
}
用法
Capitol.now("ab cd"));
Capitol.now("winnie the Pooh"));
Capitol.now("please talk loudly!"));
Capitol.now("miles o'Brien"));
答案 46 :(得分:0)
import {App} from '../../src/containers/App';
import React from 'react';
import ReactDOM from 'react-dom';
import {
renderIntoDocument,
scryRenderedDOMComponentsWithTag
} from 'react-addons-test-utils';
import {expect} from 'chai';
describe('Main page',() => {
it('should show a sign-in page if isAuthenticated is false',() => {
const component = renderIntoDocument(
<App isAuthenticated={false}/>
);
const buttons = scryRenderedDOMComponentsWithTag(component,'button')
expect(buttons.length).to.be.equal(1)
});
it('should show a welcome text if isAuthenticated is true',() => {
const component = renderIntoDocument(
<App isAuthenticated={true}/>
);
const text = scryRenderedDOMComponentsWithTag(component,'h1')
expect(text).to.have.string('welcome')
})
})
答案 47 :(得分:0)
我需要创建一个通用的toString(Object obj)辅助类函数,我必须将字段名转换为方法名 - 传递的Object的getXXX()。
这是代码
/**
* @author DPARASOU
* Utility method to replace the first char of a string with uppercase but leave other chars as it is.
* ToString()
* @param inStr - String
* @return String
*/
public static String firstCaps(String inStr)
{
if (inStr != null && inStr.length() > 0)
{
char[] outStr = inStr.toCharArray();
outStr[0] = Character.toUpperCase(outStr[0]);
return String.valueOf(outStr);
}
else
return inStr;
}
我的toString()实用程序就像这样
public static String getToString(Object obj)
{
StringBuilder toString = new StringBuilder();
toString.append(obj.getClass().getSimpleName());
toString.append("[");
for(Field f : obj.getClass().getDeclaredFields())
{
toString.append(f.getName());
toString.append("=");
try{
//toString.append(f.get(obj)); //access privilege issue
toString.append(invokeGetter(obj, firstCaps(f.getName()), "get"));
}
catch(Exception e)
{
e.printStackTrace();
}
toString.append(", ");
}
toString.setCharAt(toString.length()-2, ']');
return toString.toString();
}
答案 48 :(得分:-1)
最基本,最简单的理解方式(我认为):
import java.util.Scanner;
public class ToUpperCase {
static Scanner kb = new Scanner(System.in);
public static String capitalize(String str){
/* Changes 1st letter of every word
in a string to upper case
*/
String[] ss = str.split(" ");
StringBuilder[] sb = new StringBuilder[ss.length];
StringBuilder capped = new StringBuilder("");
str = "";
// Capitalise letters
for (int i = 0; i < ss.length; i++){
sb[i] = new StringBuilder(ss[i]); // Construct and assign
str += Character.toUpperCase(ss[i].charAt(0)); // Only caps
//======================================================//
// Replace 1st letters with cap letters
sb[i].setCharAt(0, str.charAt(i));
capped.append(sb[i].toString() + " "); // Formatting
}
return capped.toString();
}
public static void main(String[] args){
System.out.println(capitalize(kb.nextLine()));
}
}
答案 49 :(得分:-2)
//这么简单和基本
public void capalizedFirstCharOne(String str){
char[] charArray=str.toCharArray();
charArray[0]=Character.toUpperCase(charArray[0]);
for(int i=1;i<charArray.length;i++){
if(charArray[i]==' ' ){
charArray[i+1]=Character.toUpperCase(charArray[i+1]);
}
}
String result=new String(charArray);
System.out.println(result);
}
答案 50 :(得分:-4)
import java.io.*;
public class Upch2
{
BufferedReader br= new BufferedReader( new InputStreamReader(System.in));
public void main()throws IOException
{
System.out.println("Pl. Enter A Line");
String s=br.readLine();
String s1=" ";
s=" "+s;
int len=s.length();
s= s.toLowerCase();
for(int j=1;j<len;j++)
{
char ch=s.charAt(j);
if(s.charAt(j-1)!=' ')
{
ch=Character.toLowerCase((s.charAt(j)));
}
else
{
ch=Character.toUpperCase((s.charAt(j)));
}
s1=s1+ch;
}
System.out.println(" "+s1);
}
}