在java中分离未知数量的连字符?

时间:2017-10-11 10:36:17

标签: java

美好的一天,伙计们, 我正在制作一个程序,要求我输入一个名字(例如Patrick-Connor-O'Neill)。名称可以由尽可能多的名称组成,因此不一定仅限于3,如上例所示。但程序的要点是返回首字母,因此在本例中为PCO。我写信要求澄清一下。我需要首先将名称与连字符分开,对吧?然后我需要取名字的第一个字符并将其打印出来? 无论如何,我的问题基本上是如何分离字符串,如果我不知道输入了多少?我明白,如果它只是我会做的两个术语:

final String s = "Before-After";
final String before = s.split("-")[0]; // "Before"

我确实尝试过编写代码,到目前为止我所拥有的只是:

 import java.util.Scanner;
 public class main {
     public static void main(String[] args) { 
         Scanner scan = new Scanner(System.in);
         String input = scan.nextLine();
         String[] x = input.split("-");
         int u =0;
         for(String i : x) {
             String y = input.split("-")[u];
             u++;
         }
     }
}

我正在参加编程的速成课程,所以简单的概念对我来说很难。谢谢阅读!

6 个答案:

答案 0 :(得分:1)

您无需再次拆分它。通过执行String[] x = input.split("-");,你有一个字符串数组。现在,您可以使用增强的for循环迭代它们。看起来应该是这样的

String[] x = input.split("-");
String initials = "";
for (String name : x) {
    initials += name.charAt(0);
}
System.out.println(initials);

以下是使用方法的一些Java文档

答案 1 :(得分:1)

您可以在不拆分字符串的情况下使用String.indexOf查找下一个-;然后将后续字符附加到首字母:

String initials = "" + input.charAt(0);
int next = -1;
while (true) {
  next = input.indexOf('-', next + 1);
  if (next < 0) break;
  initials += input.charAt(next + 1);
}

(这里没有处理很多边缘情况;省略了处理方法的要点)。

答案 2 :(得分:0)

这可能会有所帮助

String test = "abs-bcd-cde-fgh-lik";
    String[] splitArray = test.split("-");
    StringBuffer stringBuffer = new StringBuffer();
    for (int i = 0; i < splitArray.length; i++) {
        stringBuffer.append(splitArray[i].charAt(0));
    }
    System.out.println(stringBuffer);
}

使用StringBuffer会将内存保存为,如果使用String,每次修改时都会创建一个新对象。

答案 3 :(得分:0)

for-each循环中,将String数组的所有元素的第一个字符追加到输出String中以获取首字母:

String output = "";

for(String i : x) {    
    output = output + y.charAt(0);
}

答案 4 :(得分:0)

这会有所帮助。

public static void main(String[] args) {
    String output = "";
    String input = "Patrick-Connor-O'Neil-Saint-Patricks-Day";

    String[] brokenInput = input.split("-");

    for (String temp : brokenInput) {
        if (!temp.equals(""))
            output = output + temp.charAt(0);
    }
    System.out.println(output);
}

答案 5 :(得分:0)

你可以完全尝试这样的东西(你的代码的一点重构):

    import java.util.Scanner;

public class main {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        String input = "";
        System.out.println("What's your name?");

        input = scan.nextLine();

        String[] x = input.split("-");
        int u =0;

            for(String i : x) {
                String y = input.split("-")[u];
                u++;
                System.out.println(y);
            }
    }
}

如果您想简单地分隔首字母,我认为从这里开始非常容易和直截了当。如果您是Java新手,请确保使用大量的System.out,因为它可以帮助您进行大量的调试。

良好的编码。

编辑:如果你作弊,你可以使用@Mohit Tyagi的答案来实现全部:P