在java中,将字符串中的单词大写,但跳过字符串中的数字和多余空格或符号
这就是我的节目
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.io.*;
import java.awt.event.*;
public class Capitalize
{
public static void main(String [] arg)
{
String x = JOptionPane.showInputDialog("Enter Phase");
String y = capsFirst(x);
System.out.println(y);
}
public static String capsFirst(String str)
{
String[] words = str.split(" ");
StringBuilder ret = new StringBuilder();
for(int i = 0; i < words.length; i++)
{
ret.append(Character.toUpperCase(words[i].charAt(0)));
ret.append(words[i].substring(1));
if(i < words.length - 1)
{
ret.append(' ');
}
}
return ret.toString();
}
}
现在的问题是我想不出我需要什么逻辑来让它运行嘿,这是一个数字,我不能编辑这个。当问题出现时,不要告诉我这个错误:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: 0
at java.lang.String.charAt(String.java:646)
at Capitalize.capsFirst(Capitalize.java:36)
at Capitalize.main(Capitalize.java:25)
我必须转换的文本示例如下:
伦敦(四个空间)英格兰2015
必须转换为
伦敦(四个空间)英格兰2015
# 1 楼答案
你可以试着用这个问题中描述的东西将单词[i]值解析成一个数字
How to check if a String is numeric in Java
如果isNumber返回true,则不必大写,只需将字符串附加到ret
# 2 楼答案
查看示例输入中拆分字符串的数组内容:它类似于:
处理其中一个空字符串时会出现问题。您可以在尝试大写其第一个字母之前检查
words[i]
是否为空(因为没有第一个字母)# 3 楼答案
编辑:看起来是@Andy Turner给了你答案,但这是他暗示的代码
此外,还有一种不同的方法,可以在char数组中就地执行: