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