在java中将文本转换为随机大小写



我想要关于如何编写应用程序代码将文本转换为大写和小写交替的建议。

示例:

你好,早上好

转换为

hElLo GoOd MoRnIG

String str = "hello good morning";
char[] letters = str.toCharArray();
StringBuilder sb = new StringBuilder(letters.length);
for (int i = 0; i < letters.length; i++) {
if (i % 2 == 0) {
sb.append(Character.toLowerCase(letters[i]));
else {
sb.append(Character.toUpperCase(letters[i]));
}
}

第一个字母小写,第二个字母大写,第三个字母小写等。根据要求,交替使用大写和小写。如果您想从大写开始,而不是像上面代码中那样从小写开始,只需将if语句中的条件更改为…

if (i % 2 == 1) {

随机模式:

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

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

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
public static String StudlyCaps(String txt) {
Random random = new Random();
char[] letters = txt.toCharArray();
StringBuilder sb = new StringBuilder(letters.length);
for (int i = 0; i < letters.length; i++) {
if (random.nextBoolean()){
sb.append(Character.toLowerCase(letters[i]));
}
else {
sb.append(Character.toUpperCase(letters[i]));
}

}
return sb.toString();
}

最新更新