获取String中每个单词的第一个字符

我正在努力让一个程序工作,它执行以下操作:

假设我们有一个名为nameString ,设置为"Stack Overflow Exchange" 。 我想输出给用户"SOE" ,每个单词的第一个字符。 我尝试使用split()方法,但我没有做到。

我的代码:

 public class q4 { public static void main(String args[]) { String x = "michele jones"; String[] myName = x.split(""); for(int i = 0; i < myName.length; i++) { if(myName[i] == "") { String s = myName[i]; System.out.println(s); } } } } 

我试图检测是否有空格,然后我可以简单地采取下一个索引。 谁能告诉我我做错了什么?

尝试按" " (空格)拆分,然后获取每个单词的charAt(0) (第一个字符)并按如下方式打印:

 public static void main(String args[]) { String x = "Shojibur rahman"; String[] myName = x.split(" "); for (int i = 0; i < myName.length; i++) { String s = myName[i]; System.out.println(s.charAt(0)); } } 
 String initials = ""; for (String s : fullname.split(" ")) { initials+=s.charAt(0); } System.out.println(initials); 

这样工作方式:

  1. 声明变量“initials”以保存结果
  2. 在空格上拆分fullname字符串,并迭代单个单词
  3. 将每个单词的第一个字符添加到首字母

编辑:

正如所建议的,字符串连接通常效率不高,如果您处理非常长的字符串,StringBuilder是更好的选择:

 StringBuilder initials = new StringBuilder(); for (String s : fullname.split(" ")) { initials.append(s.charAt(0)); } System.out.println(initials.toString()); 

编辑:

您可以简单地将String作为字符数组获取:

 char[] characters = initials.toString().toCharArray(); 

您的代码中存在许多错误:

 String [] myName=x.split(""); 

你真的想拆分"" (空字符串)吗? 您可能想要分隔空格:

 String [] myName=x.split(" "); 

和:

 if(myName[i]=="") 

切勿在Java .equals字符串与==进行比较,始终使用.equals

 if (myName[i].equals("")) 

使用Java 8流:

 String initials = Arrays.stream(str.split(" ")) .map(s -> s.substring(0, 1)) .collect(Collectors.joining()); System.out.println(initials); 

你正在分裂一个空字符串而不是空格“”。 你的循环也没有多大意义,我不确定你想要做什么。

  String [] myName=x.split(" "); for(int i=0; i 

你需要用一个你不能用“”拆分的空间来填充它。 它没有任何意义。 你做错的另一件事是===在字符串比较中是不正确的。 请参阅如何比较Java中的字符串?

 public class q4 { public static void main(String args[]) { String x="Shojibur rahman"; String [] myName=x.split(" "); for(int i=0; i 

由于您的程序没有线程安全,因此可以使用StringBuilder 。 对于长字符串,我建议你可以使用StringTokenizer

Java 8中接受的回复:

 /** * Gets the first character of every word in the sentence. * * @param string * @return */ public static String getFirstLetterFromEachWordInSentence(final String string) { if (string == null) { return null; } StringBuilder sb = new StringBuilder(); Arrays.asList(string.split(" ")).forEach(s -> sb.append(s.charAt(0)).append(" ")); return sb.toString().trim(); }