-4

我得到的名字是字符串。如何以以下格式显示:如果是单个单词,我需要单独显示第一个字符。如果是两个单词,我需要显示单词的前两个字符。

John : J
Peter: P
Mathew Rails : MR
Sergy Bein : SB

我不能使用 an enum,因为我不确定该列表是否会一直返回相同的值。尽管他们说,它永远不会改变。

String name = myString.split('');
topTitle = name[0].subString(0,1);
subTitle = name[1].subString(0,1);
String finalName = topTitle + finalName;

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

4

5 回答 5

0

您尝试的代码中几乎没有错误。

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

所以应该是:

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);
于 2013-06-26T14:48:04.337 回答
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);
}
于 2013-06-26T15:00:33.453 回答
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;
于 2013-06-26T14:49:48.483 回答
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,则返回空字符串,否则返回第一个字符

于 2013-06-26T14:51:17.543 回答
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);
}
于 2013-06-26T14:52:04.400 回答