Java 当我想缩写两个单词时,我会出错
我想缩写名字,给定的名字包括3个或更多的名字。 另外,我想把“.”放在它们之间。Java 当我想缩写两个单词时,我会出错,java,string,Java,String,我想缩写名字,给定的名字包括3个或更多的名字。 另外,我想把“.”放在它们之间。 多谢各位 比如说 sam harris dorothy 我的期望输出如下 s.h.d 我的代码是这样的 public class AbbreviateTwoWords { public static void main(String[] args) { String shs = abbrevName("Sam Harris");
多谢各位 比如说
sam harris dorothy
我的期望输出如下
s.h.d
我的代码是这样的
public class AbbreviateTwoWords {
public static void main(String[] args) {
String shs = abbrevName("Sam Harris");
System.out.println(shs);
}
public static String abbrevName(String name) {
String[] splitnamelist = name.split(" ");
char[] shortform = new char[10];
String point = ".";
int initial = 0;
for (String i : splitnamelist) {
if (initial % 2 == 0) {
shortform[initial] = i.charAt(0);
initial++;
} else {
shortform[initial]=point;
initial++;
}
return new String(shortform);
}
}
}
为什么要复杂化并使用char数组,我猜它和索引有关,不管怎样,只要使用string和concatenate即可:
public static String abbrevName(String name) {
String[]splitnamelist=name.split(" ");
String shortform="";
for (String currentName:splitnamelist) {
shortform=shortform+currentName.charAt(0);
shortform=shortform+".";
}
//remove the last dot
if (shortform.length()>0)
{
shortform=shortform.substring(0, shortform.length()-1);
}
return shortform;
}
公共类缩写名称{
公共静态void main(字符串[]args){
缩写名称shs=新缩写名称();
shs.abbrevName(“山姆·哈里斯·多萝西”);
}
public void abbrevName(字符串名称){
字符串splitName[]=name.split(“”),separatedName=“”;
int i=0;//删除最后一个“+”符号。
for(字符串键:splitName){
单独的dname+=键;
如果(i如果允许您使用Java 8+流,您可以创建以下缩写:
import java.util.*;
import java.util.stream.*;
public class Main {
public static String abbreviate(String input) {
if (null == input || input.isEmpty()) {
// nothing to abbreviate
return input;
}
return Arrays.stream(input.split("[.\\s]+")) // split input line by 1 or more whitespaces or dot
.map(s -> s.substring(0, 1)) // get first letter
.collect(Collectors.joining(".")); // join letters into string with "." delimiter
}
}
在此代码中,分隔符中还包含一个点“
”,以正确处理输入字符串中存在的缩写
测试和测试:
输出:
'Jerome K. Jerome' -> 'J.K.J'
'Robert Louis Stevenson' -> 'R.L.S'
'Charles Lutwidge Dodgeson' -> 'C.L.D'
在
Java8
中,我们可以用几行代码来完成这项工作
String shs = "sam harris dorothy";
String shortform = Arrays.stream(shs.split(" "))
.map(s -> s.substring(0, 1))
.map(s -> s.concat("."))
.collect(Collectors.joining());
这是输出:
System.out.println(shortform); //Output is: s.h.d.
System.out.println(shortform.substring(0, shortform.length()-1)); //Output is: s.h.d
您声明您看到了一个错误--您得到了什么错误?完整的消息有帮助
String shs = "sam harris dorothy";
String shortform = Arrays.stream(shs.split(" "))
.map(s -> s.substring(0, 1))
.map(s -> s.concat("."))
.collect(Collectors.joining());
System.out.println(shortform); //Output is: s.h.d.
System.out.println(shortform.substring(0, shortform.length()-1)); //Output is: s.h.d