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

时间:2018-04-10 09:00:35

标签: java

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

我正在尝试这种方式。但它不起作用。

{
    "css": {
        "snippets": {
            "@media max-width": "@media(max-width: ${1:768}px) {\n\t${2}\n}",
            "@media min-width": "@media(min-width: ${1:768}px) {\n\t${2}\n}"
        }
    }
}

我找到了一个简单的解决方案:

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));
    }

}

5 个答案:

答案 0 :(得分:2)

if(value.startsWith(buzzReplace))

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

因此,您需要遍历buzzReplace列表的内容:

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

您对replaceAll的使用也不正确,与方法签名不符。我会留给您修复代码中的元素。 (提示:您不需要修改列表的内容)

答案 1 :(得分:1)

而不是

if(value.startsWith(buzzReplace))

尝试

String[] buzzReplace ={"a","e","i","o","u"};
if (Arrays.asList(buzzRepalce).contains(value.subString(0,1))

答案 2 :(得分:0)

这个答案的想法就像Jamesp的答案,但是因为你的代码有一些错误,也许你在下一步面对它们,我发送整个方法。

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()));
}

答案 3 :(得分:0)

编写一些执行任务的方法。说吧。 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="sommaire bullets" role="navigation"> <ol> <li><a href="#北海道エリアで選べる電力会社">北海道エリアで選べる電力会社</a></li> <li><a href="#北海道エリア電力会社・電気料金">北海道エリアの電力会社と電気料金プラン</a></li> </ol> </div> <div style="height:500px; width:100%;"></div> <h2 id="北海道エリアで選べる電力会社">北海道エリアで選べる電力会社</h2> <div style="height:500px; width:100%;"></div> <h2 id="北海道エリア電力会社・電気料金">北海道エリアの電力会社と電気料金プラン</h2>
现在从该方法获取替换的数组。

getReplacedList(List<String> names)

现在将原始列表传递给此方法以获取替换列表。

您的解决方案看起来像。

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;
}

答案 4 :(得分:0)

使用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());
}