Java中如何替换以字母开头的字符串

Java中如何替换以字母开头的字符串,java,Java,我想创建一个方法来打印ArrayList中的元素。 如果字符串以a、e、i、o或u开头,而不是打印字符串,则应打印Buzz 我正试着这样做。但这是行不通的 ArrayList<String> names = new ArrayList<>(); names.add("Harry"); names.add("Kathy"); ArrayList<String> replaceArray = new ArrayList<>();

我想创建一个方法来打印ArrayList中的元素。 如果字符串以a、e、i、o或u开头,而不是打印字符串,则应打印Buzz

我正试着这样做。但这是行不通的

ArrayList<String> names = new ArrayList<>();
    names.add("Harry");
    names.add("Kathy");

ArrayList<String> replaceArray = new ArrayList<>();

    String buzzReplace[] ={"a","e","i","o","u"};



    for(String value:names)
    {
        if(value.startsWith(buzzReplace))
        {
            replaceArray = names.replaceAll(value,"Buzz");
        }

        System.out.println(replaceArray.get(value));
    }
}而不是

if(value.startsWith(buzzReplace))
试一试

如果您考虑这里涉及的类型,显然字符串不能以字符串数组开头。一个字符串可能以另一个字符串开头

因此,您需要迭代
buzzReplace
列表的内容:

for(String name : names)
{
    for (String vowel : buzzReplace)
    {
        if (name.startsWith(vowel))
        {
            //do something
        }
    }
}

您使用的
replaceAll
也不正确,并且与方法签名不匹配。我将让您自行修复代码中的该元素。(提示:您不需要修改列表的内容)

此答案想法类似于Jamesp的答案,但由于您的代码有一些bug,可能您在下一步中会遇到这些bug,因此我将发送整个方法

public static void main(String[] args) {
    ArrayList<String> names = new ArrayList<>();
    names.add("Harry");
    names.add("Kathy");
    names.add("aathy");


    ArrayList<String> replaceArray = new ArrayList<>();

    String[] buzzReplace ={"a","e","i","o","u"};

    for(String value:names)
    {
        if(Arrays.asList(buzzReplace).contains(value.substring(0,1)))
        {
            replaceArray.add("Buzz");
        }
        else replaceArray.add(value);
    }
    System.out.println(Arrays.toString(replaceArray.toArray()));
}
publicstaticvoidmain(字符串[]args){
ArrayList name=新的ArrayList();
姓名。添加(“哈里”);
姓名。添加(“凯西”);
名称。添加(“aathy”);
ArrayList replaceArray=新的ArrayList();
字符串[]buzzReplace={“a”、“e”、“i”、“o”、“u”};
for(字符串值:名称)
{
if(Arrays.asList(buzzReplace).contains(value.substring(0,1)))
{
replaceArray.add(“Buzz”);
}
else replaceArray.add(值);
}
System.out.println(Arrays.toString(replaceArray.toArray());
}

编写一些执行该任务的方法。比如说<代码>获取替换列表(列表名称)
现在从该方法中获取替换的数组

private static List<String> getReplacedList(List<String> names) {
    ArrayList<String> replaceArray = new ArrayList<>();
    String buzzReplace = "aeiou";

    names.stream().forEach(name ->{
        //user to lower case if you want to ignore case.
        if (buzzReplace.contains(name.toLowerCase().charAt(0)+"")) {
            //do some thing like 
            replaceArray.add("Buzz");
        } else {
            replaceArray.add(name);
        }

    });

    return replaceArray;
}
private静态列表getReplacedList(列表名称){
ArrayList replaceArray=新的ArrayList();
字符串buzzReplace=“aeiou”;
names.stream().forEach(名称->{
//如果要忽略大小写,请将用户设置为小写。
if(buzzReplace.contains(name.toLowerCase().charAt(0)+“”){
//做一些像
replaceArray.add(“Buzz”);
}否则{
replaceArray.add(名称);
}
});
返回替换数组;
}
现在将原始列表传递给此方法以获取替换的列表

您的解决方案看起来像

public static void main(String... args) {
    ArrayList<String> names = new ArrayList<>();
    names.add("Harry");
    names.add("Kathy");     

    List<String> replaceArray = new ArrayList<>();
    replaceArray = getReplacedList(names);

    //do some thing with replace array.
    System.out.println(replaceArray.toString());
}

private static List<String> getReplacedList(List<String> names) {
    ArrayList<String> replaceArray = new ArrayList<>();
    String buzzReplace = "aeiou";

    names.stream().forEach(name ->{
        //user to lower case if you want to ignore case.
        if (buzzReplace.contains(name.toLowerCase().charAt(0)+"")) {
            //do some thing like 
            replaceArray.add("Buzz");
        } else {
            replaceArray.add(name);
        }

    });

    return replaceArray;
}
publicstaticvoidmain(字符串…参数){
ArrayList name=新的ArrayList();
姓名。添加(“哈里”);
姓名。添加(“凯西”);
List replaceArray=new ArrayList();
replaceArray=getReplacedList(名称);
//用replace数组做一些事情。
System.out.println(replaceArray.toString());
}
私有静态列表getReplacedList(列表名称){
ArrayList replaceArray=新的ArrayList();
字符串buzzReplace=“aeiou”;
names.stream().forEach(名称->{
//如果要忽略大小写,请将用户设置为小写。
if(buzzReplace.contains(name.toLowerCase().charAt(0)+“”){
//做一些像
replaceArray.add(“Buzz”);
}否则{
replaceArray.add(名称);
}
});
返回替换数组;
}

使用Java 8,您可以执行以下操作:

public List<String> buzz(List<String> names) {
    List<Character> buzzChars = Arrays.asList('a', 'e', 'i', 'o', 'u');
    return names.stream()
            .map(name -> buzzChars.contains(name.toLowerCase().charAt(0)) ? "Buzz" : name)
            .collect(Collectors.toList());
}
公共列表嗡嗡声(列表名称){
List buzzChars=Arrays.asList('a','e','i','o','u');
返回names.stream()
.map(name->buzzChars.contains(name.toLowerCase().charAt(0))?“Buzz”:name)
.collect(Collectors.toList());
}

您能提供示例I/O吗?我正在尝试name=name.replaceAll(元音“buzz”)。但这只代替了第一个字母,我明白了。谢谢你:D。。仅此而已:name=“buzz”;
private static List<String> getReplacedList(List<String> names) {
    ArrayList<String> replaceArray = new ArrayList<>();
    String buzzReplace = "aeiou";

    names.stream().forEach(name ->{
        //user to lower case if you want to ignore case.
        if (buzzReplace.contains(name.toLowerCase().charAt(0)+"")) {
            //do some thing like 
            replaceArray.add("Buzz");
        } else {
            replaceArray.add(name);
        }

    });

    return replaceArray;
}
public static void main(String... args) {
    ArrayList<String> names = new ArrayList<>();
    names.add("Harry");
    names.add("Kathy");     

    List<String> replaceArray = new ArrayList<>();
    replaceArray = getReplacedList(names);

    //do some thing with replace array.
    System.out.println(replaceArray.toString());
}

private static List<String> getReplacedList(List<String> names) {
    ArrayList<String> replaceArray = new ArrayList<>();
    String buzzReplace = "aeiou";

    names.stream().forEach(name ->{
        //user to lower case if you want to ignore case.
        if (buzzReplace.contains(name.toLowerCase().charAt(0)+"")) {
            //do some thing like 
            replaceArray.add("Buzz");
        } else {
            replaceArray.add(name);
        }

    });

    return replaceArray;
}
public List<String> buzz(List<String> names) {
    List<Character> buzzChars = Arrays.asList('a', 'e', 'i', 'o', 'u');
    return names.stream()
            .map(name -> buzzChars.contains(name.toLowerCase().charAt(0)) ? "Buzz" : name)
            .collect(Collectors.toList());
}