您将如何从仅以指定字母开头的数组中打印所有字符串?

时间:2020-04-18 15:45:15

标签: java

如果您在数组中有一个名称列表

 char letter = in.next().toLowerCase().charAt(0);


        for (int i=0; i<Names.length; i++) {
            if(Names[i].toLowerCase().charAt(0)==letter){

                System.out.println(babyNames[i].toLowerCase().charAt(0)==letter);

编辑:我不希望它返回布尔值,而是名称。

5 个答案:

答案 0 :(得分:1)

正则表达式可以帮助您定义结构,以便它可以确定字符串是否具有该结构:

if(Pattern.matches("^[Bb].*",str)){
     System.out.println("the str value stated with b");
}

此处^表示要匹配的字符串的开头,而[Bb表示此字符串之后必须与大写或小写字母B匹配。 .*表示任何字符(点)为零,一次或多次。

答案 1 :(得分:1)

您应该首先通过for循环在数组上进行迭代,并检查每个名称的第一个索引处的字符,如果它是'B',则程序应打印该名称,否则它将继续并继续使用下一个名称:

public static void main(String[] args) {
        String[] names = {
   "Abby", "Ben", "Bill", "Brian", "Craig", "Cassandra",
   "Collin", "David", "Donny", "Mitchell"
    };

    for (int i =0; i< names.length; i++)
    {
        if (names[i].charAt(0) == 'B')
        {
            System.out.println(names[i]);
        }
    }
}

或者您可以类似地使用startsWith()这是Java字符串方法:

if (names[i].startsWith("B"))
{
     System.out.println(names[i]);
}

输出:

Ben                                                                                                                   
Bill                                                                                                                  
Brian

答案 2 :(得分:0)

何时使用Stream API(需要Java 8和更高版本):

Arrays.stream(names).filter(e -> e.toLowerCase().startsWith("b")).forEach(System.out::println);

否则,您可以简单地使用带if语句的for循环:

for (int i = 0; i < names.length; i++) {
            if (names[i].toLowerCase().startsWith("b"))
                System.out.println(names[i]);
        }

答案 3 :(得分:0)

使用Java 8流和startsWith。

EMPID   DEPARTMENT  RECORD_DATE
123456  Technology  2019-01-01
123456  Technology  2019-02-25
123456  Finance     2019-03-01
123456  Finance     2019-09-28
123456  HR          2020-03-01

987654  HR          2019-04-01
987654  Finance     2019-09-01
987654  HR          2020-01-31

答案 4 :(得分:0)

您可以执行以下操作,创建如下所示的函数

private static List<String> getList(String[] names, String pattern) {
    List<String> temp = new ArrayList<>();
    for(int i=0;i<names.length;i++) {
        if(names[i].toLowerCase().startsWith(pattern.toLowerCase()))
            temp.add(names[i]);
        }
    return temp;
}

如果使用Java-8,则可以使用流式API

private static List<String> getList(String[] names, String pattern) {
  return Arrays.stream(names).filter(name -> name.toLowerCase().startsWith(pattern.toLowerCase())).collect(Collectors.toList());
}

然后,您可以指定要使用

过滤列表的任何字母
String pattern = "b";

然后调用函数

System.out.println(getList(names,pattern));

输出

[Ben, Bill, Brian]

注意:您还可以修改getList函数以与java.util.regex.Pattern

一起使用