2013-06-26 96 views
-5

我以String的形式获取名称。如何以下列格式显示:如果是单个单词,则需要单独显示第一个字符。如果是两个单词,我需要显示单词的前两个字符。检查字符串是否包含多个单词

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; 

上面的代码很好,但它不工作。我也没有得到任何例外。

+1

定义 “不工作”。 –

+0

什么异常? – PermGenError

+4

一切都很好,除了你的名字应该是一个数组。 'String#split'返回一个数组。那么,该代码是如何编译的呢? –

回答

0

您尝试的代码中很少有错误。

  1. String#split将字符串作为正则表达式。
  2. String#split的返回值是一个String数组。

所以它应该是:

String[] name = myString.split(" "); 

String[] name = myString.split("\\s+); 

您还需要检查的数组元素先这样避免异常#:

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); 
+0

您必须检查名称[1]和名称[0]是否为空,因为他说“如果它是单个单词,我需要单独显示第一个字符。” – JREN

+0

@JREN:我正在检查'name.length == 2'以确保。 – anubhava

0

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; 
0

你接近..

String[] name = myString.split(" "); 
String finalName = name[0].charAt(0)+""+(name.length==1?"":name[1].charAt(0)); 

(name.length==1?"":name[1].charAt(0))是一个三元运算符,其将返回空,如果名称数组的长度为1,否则它会返回第1个字符

+0

您必须检查名称[1]和名称[0]是否为空,因为他说“如果它是单个单词,我需要单独显示第一个字符。” – JREN

+0

你还应该解释三元运算符是如何工作的,如果OP不知道它是什么,他不会选择你的最佳答案,因为他不知道'name.size()== 1是什么?“ “:name [1] .charAt(0)'表示 – BackSlash

+0

@返回闪存点数..感谢 – Anirudha

0

第一:“名称”应该是一个数组。

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); 
} 
0

这会为你工作

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); 
} 
相关问题