java中随机大小写的文本转换

java中随机大小写的文本转换,java,Java,我想知道如何编写一个应用程序,将文本转换成交替的大小写 例如: 你好,早上好 转化为 你好,早上好 随机模式: System.out.println( "hello good morning".chars() // get chars .map(i -> new Random().nextDouble() > 0.5 ? Character.toUpperCase(i) : Character.toLowerCase(i)) // change the

我想知道如何编写一个应用程序,将文本转换成交替的大小写

例如:

你好,早上好

转化为

你好,早上好

随机模式:

System.out.println(
        "hello good morning".chars() // get chars
        .map(i -> new Random().nextDouble() > 0.5 ? Character.toUpperCase(i) : Character.toLowerCase(i)) // change the case
        .collect(StringBuilder::new,StringBuilder::appendCodePoint, StringBuilder::append)); // collect to string
替代模式:

String str = "hello good morning";
System.out.println(
        IntStream.range(0, str.length()) // range of length
        .map(i -> i % 2 == 1 ? Character.toUpperCase(str.codePointAt(i)): Character.toLowerCase(str.codePointAt(i))) // map the values accordingly
        .collect(StringBuilder::new,StringBuilder::appendCodePoint, StringBuilder::append)); // collect to string
String str=“你好,早上好”;
char[]字母=str.toCharArray();
StringBuilder sb=新StringBuilder(字母长度);
for(int i=0;i
第一个字母是小写,第二个字母是大写,第三个字母是小写,等等。根据要求,交替使用大写和小写。如果希望以大写开头,而不是像上面代码中那样以小写开头,只需将
If
语句中的条件更改为

if(i%2==1){

本页上所有现有答案都很好,但没有一个符合确切要求。要求只切换下一个字母的大小写,而不是每个字符的大小写(本页上所有现有答案都是这样做的)。下面给出了具体的操作方法:

public class Main {
    public static void main(String[] args) {
        String str = "hello good morning";
        char[] charArr = str.toCharArray();
        StringBuilder sb = new StringBuilder();
        boolean switchCase = false;
        for (char ch : charArr) {
            if (Character.isLetter(ch)) {
                if (switchCase) {
                    sb.append(Character.toUpperCase(ch));
                } else {
                    sb.append(Character.toLowerCase(ch));
                }
                switchCase = !switchCase;
            } else {
                sb.append(ch);
            }
        }
        System.out.println(sb);
    }
}
输出:

hElLo GoOd MoRnInG

toString()
在这种情况下,如果您使用的是
Syso
,那么它就没用了,因为
toString()
将被自动调用。仅供参考,Android 7.0版(Nougat)支持的streams API,API级别24。此答案可能效率低下,因为它会为映射操作的每个步骤创建一个新的
Random
对象。您的问题标题要求使用随机大小写,但问题本身要求使用交替大小写。您实际需要哪一个?@TimBiegeleisen Alternative case,抱歉,我的badI已更新根据您的需要选择我的答案。@AmanBaid-如果其中一个答案解决了您的问题,您可以通过将其标记为已接受来帮助社区。已接受的答案有助于未来的访问者自信地使用该解决方案。请查看以了解如何使用该解决方案。