获取String中每个单词的第一个字符
我正在努力让一个程序工作,它执行以下操作:
假设我们有一个名为name
的String
,设置为"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);
这样工作方式:
- 声明变量“initials”以保存结果
- 在空格上拆分fullname字符串,并迭代单个单词
- 将每个单词的第一个字符添加到首字母
编辑:
正如所建议的,字符串连接通常效率不高,如果您处理非常长的字符串,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(); }