预期输入: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();
}
我的输出不符合预期。
答案 0 :(得分:4)
split
正则表达式输入中的逗号后面有空格,您可以在String str[] = name.split(",");
中修改正则表达式
String str[] = name.split(",\\s*");
到
Doe, John
J. Doe
匹配并删除可选空白区域。完成上述更改后,我运行了您的代码,并得到了(预期的)输出
trim
或者 , str[1]
sb.append(str[1].trim().charAt(0)); //<-- will also remove leading space
才能获得第一个字符
Pattern
// 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;
}
另一个 可能的选项是编译正则表达式 Pattern
并使用Matcher
之类的
<link href="css/ionic.app.css" rel="stylesheet">
<link href="lib/toaster/toaster.css" rel="stylesheet">
<!-- ionic/angularjs js -->
<script src="lib/ionic/js/ionic.bundle.js"></script>
<!-- angular touch -->
<script src="lib/angular-touch/angular-touch.js"></script>
<!-- cordova script (this will be a 404 during development) -->
<script src="cordova.js"></script>
答案 1 :(得分:2)
另一种获取FirstInitial.LastName
的简单方法除了使用split之外,您可以使用子字符串并根据逗号,
的位置,操作名称以获取输出:
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
答案 2 :(得分:1)
sb.append(str[1].charAt(0));
,charAt()
的索引应为1而不是0.
String str[] = name.split(",");
将返回[Doe, John]
,注意第二个元素之前的空格。
更好地使用split(", ")
答案 3 :(得分:1)
我根据我的理解尝试了这个。用于循环和修剪项目
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();
}