Java 检查字符串是否包含多个单词
我得到的名字是字符串。如何以以下格式显示:如果是单个单词,则需要单独显示第一个字符。如果是两个单词,我需要显示单词的前两个字符Java 检查字符串是否包含多个单词,java,Java,我得到的名字是字符串。如何以以下格式显示:如果是单个单词,则需要单独显示第一个字符。如果是两个单词,我需要显示单词的前两个字符 John : J Peter: P Mathew Rails : MR Sergy Bein : SB 我不能使用enum,因为我不确定列表是否始终返回相同的值。尽管他们说,这永远不会改变 String name = myString.split(''); topTitle = name[0].subString(0,1); subTitle = name[1].su
John : J
Peter: P
Mathew Rails : MR
Sergy Bein : SB
我不能使用enum
,因为我不确定列表是否始终返回相同的值。尽管他们说,这永远不会改变
String name = myString.split('');
topTitle = name[0].subString(0,1);
subTitle = name[1].subString(0,1);
String finalName = topTitle + finalName;
上面的代码很好,但不起作用。我也没有收到任何异常。您尝试的代码中几乎没有错误
String#split
将字符串作为正则表达式String#split
的返回值是字符串数组String[] name = myString.split(" ");
或
您还需要首先像这样检查数组中元素的#,以避免异常:
String topTitle, subTitle;
if (name.length == 2) {
topTitle = name[0].subString(0,1);
subTitle = name[1].subString(0,1);
}
else
topTitle = name.subString(0,1);
String.split
方法根据正则表达式将字符串拆分为字符串数组
这应该起作用:
String[] names = myString.split("\\s+");
String topTitle = names[0].subString(0,1);
String subTitle = names[1].subString(0,1);
String finalName = topTitle + finalName;
你很接近
String[] name = myString.split(" ");
String finalName = name[0].charAt(0)+""+(name.length==1?"":name[1].charAt(0));
(name.length==1?”:name[1].charAt(0))
是一个三元运算符,如果name数组的长度为1,它将返回空字符串,否则它将返回第一个字符。首先:“name”应该是一个数组
String[] names = myString.split(" ");
第二:应该使用if函数和length
变量来确定变量的长度
String initial = "";
if(names.length > 1){
initial = names[0].subString(0,1) + names[1].subString(0,1);
}else{
initial = names[0].subString(0,1);
}
或者,您可以使用for循环
String initial = "";
for(int i = 0; i < names.length; i++){
initial += names[i].subString(0,1);
}
字符串首字母=”;
for(int i=0;i
这对您很有用
public static void getString(String str) throws IOException {
String[] strr=str.split(" ");
StringBuilder sb=new StringBuilder();
for(int i=0;i<strr.length;i++){
sb.append(strr[i].charAt(0));
}
System.out.println(sb);
}
publicstaticvoidgetstring(stringstr)抛出IOException{
字符串[]strr=str.split(“”);
StringBuilder sb=新的StringBuilder();
for(int i=0;iDefine“不起作用”。一切都很好,除了,你的名字应该是一个数组。String#split
返回一个数组。那么,那段代码是如何编译的呢?如果不是substring()而不是substring(),每个答案也都是一样的。你必须检查name[1]和name[0]是否不是null,因为他说“如果是单个单词,我需要单独显示第一个字符。”您还应该解释三元运算符的工作原理,如果OP不知道它是什么,他不会选择您的作为最佳答案,因为他不知道什么是name.size()==1?”:name[1]。charAt(0)
means@JREN无需检查..如果没有空格,split将返回一个字符串..其余部分由三元运算符处理您必须检查名称[1]和名称[0]是否不为null,因为他说“如果是单个单词,我需要单独显示第一个字符。“@JREN:我正在检查name.length==2
以确保这一点。
public static void getString(String str) throws IOException {
String[] strr=str.split(" ");
StringBuilder sb=new StringBuilder();
for(int i=0;i<strr.length;i++){
sb.append(strr[i].charAt(0));
}
System.out.println(sb);
}