Java 如何获取LastName、FirstName字符串并返回FirstInitial.LastName
预期输入:Doe,John 预期产出:J.DoeJava 如何获取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
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 changedString 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