Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取LastName、FirstName字符串并返回FirstInitial.LastName_Java - Fatal编程技术网

Java 如何获取LastName、FirstName字符串并返回FirstInitial.LastName

Java 如何获取LastName、FirstName字符串并返回FirstInitial.LastName,java,Java,预期输入:Doe,John 预期产出:J.Doe public static void main(String[] args) { String z = "Doe, John"; System.out.println(z); String y = formatName(name); System.out.println(y); } public static String formatNam

预期输入:Doe,John

预期产出:J.Doe

     public static void main(String[] args) {

         String z = "Doe, John";
         System.out.println(z);
         String y = formatName(name);
         System.out.println(y);
     }

     public static String formatName(String name) {
        String str[] = name.split(",");
        StringBuilder sb = new StringBuilder();
        sb.append(str[1].charAt(0));
        sb.append(". ");
        sb.append(str[0]);
        return sb.toString();
   }
我的输出不符合预期

sb.append(str[1].charAt(0))
charAt()
的索引应为1而不是0

String str[]=name.split(“,”)
将返回
[Doe,John]
,注意第二个元素前面的空格

最好使用
split(“,”)

将空白与
String.split
正则表达式匹配(可选) 输入中逗号后有空格,可以在
split
from中修改正则表达式

String str[] = name.split(",");

匹配并删除可选的空白。在进行上述更改后,我运行了您的代码,并获得了(预期的)输出

修剪前导空白 或者,您可以在获得第一个字符之前
修剪
str[1]

sb.append(str[1].trim().charAt(0)); //<-- will also remove leading space

根据我的理解,我尝试了这个。用于循环和修剪项目

公共静态字符串格式名(字符串名){
字符串str[]=name.split(“,”);
对于(int i=0;i
获取FirstInitial.LastName的另一种简单方法

除了使用split之外,您还可以使用substring,并根据逗号
的位置,操纵名称以获得输出:

String s = "Doe, John";

s = s.replace(" ", "");                                      //remove spaces
int i = s.indexOf(",");                                      //get pos of comma
String name = s.charAt(i+1) + ". " + s.substring(0, i);      //create name

输出:

J. Doe

上拆分,“
不是
”,“
str[1].charAt(0)=space
我尝试了你说的,但由于某种原因它不起作用?主方法是否保持不变?@Progamminnoob I changed
String y=formatName(name)
字符串y=formatName(z),您没有
名称
变量(在您的帖子中)。哦,哈哈,brain fart x 100000非常感谢elliot.)@Progamminnoob您可以查看此解决方案。@user3473460是的,这将适用于,但对于我的项目,我必须将其包含在一个方法中:/@Progamminnoob没有冲突。只需将这些代码包含在一个方法中。类似于
publicstaticstringmakename(strings)
的内容,然后返回
name
// Match (and group) one more characters followed by a "," and
// optional whitespace. Then match (and group) one character followed
// any number of optional characters.
private static Pattern pattern = Pattern.compile("(.+),\\s*(.).*");
public static String formatName(String name) {
    Matcher m = pattern.matcher(name);
    if (m.matches()) {
        return String.format("%s. %s", m.group(2), m.group(1));
    }
    return name;
}
public static String formatName(String name) {
        String str[] = name.split(",");
        for(int i = 0 ; i < str.length ; i++){
            str[i] = str[i].trim();
            //System.out.println("+"+str[i]+"+");
        }

        StringBuilder sb = new StringBuilder();
        sb.append(str[1].charAt(0));
        sb.append(".");
        sb.append(str[0]);
        sb.append(".");
        return sb.toString().trim();
    }
String s = "Doe, John";

s = s.replace(" ", "");                                      //remove spaces
int i = s.indexOf(",");                                      //get pos of comma
String name = s.charAt(i+1) + ". " + s.substring(0, i);      //create name
J. Doe