将字符串中每隔一个字母转换为大写,仅计算java字符
我想把字符串中的每一个字母都转换成大写。假设我有一个字符串:“h3e5l!@lo461!28”,我需要查看该字符是否为字母,然后将每隔一个字母转换为大写字母。这是我现在的代码,但它不起作用,我不知道如何修复它将字符串中每隔一个字母转换为大写,仅计算java字符,java,string,capitalize,Java,String,Capitalize,我想把字符串中的每一个字母都转换成大写。假设我有一个字符串:“h3e5l!@lo461!28”,我需要查看该字符是否为字母,然后将每隔一个字母转换为大写字母。这是我现在的代码,但它不起作用,我不知道如何修复它 public static void main(String[]args){ String a = "h3e5l!@lo461!28" ; System.out.println(cap(a)); } public static String cap(S
public static void main(String[]args){
String a = "h3e5l!@lo461!28" ;
System.out.println(cap(a));
}
public static String cap(String a){
for(int i = 0; i< a.length(); i++){
if(Character.isLetter(a.charAt(i)) && i % 2 == 0){
a.charAt(i) = a.toUpperCase();
}
}
return a;
}
publicstaticvoidmain(字符串[]args){
字符串a=“h3e5l!@lo461!28”;
系统输出打印LN(第(a)章);
}
公共静态字符串帽(字符串a){
对于(int i=0;i
您可以使用StringBuilder
对象收集所有处理过的字符,并在最后返回StringBuilder
对象
public class Main {
public static void main(String[] args) {
String a = "h3e5l!@lo461!28";
System.out.println(cap(a));
}
public static String cap(String a) {
int count = 0;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < a.length(); i++) {
char ch = a.charAt(i);
// Capitalise every other letter
if (Character.isLetter(ch) && (++count) % 2 == 0) {
sb.append(Character.toUpperCase(ch));
} else {
sb.append(ch);
}
}
return sb.toString();
}
}
您的做法是正确的,但是您不能替换
字符串中的单个字符,您应该使用从String\tocharray
检索的char[]
,如下所示:
public static void main(String[]args){
String a = "h3e5l!@lo461!28" ;
System.out.println(cap(a));
}
public static String cap(String a){
// count letters
int letterCount = 0;
char[] chars = a.toCharArray();
for(int i = 0; i < chars.length; i++){
if(Character.isLetter(chars[i])) {
letterCount += 1;
if(letterCount % 2 == 0) { // every other letter
chars[i] = Character.toUpperCase(chars[i]);
}
}
}
return new String(chars);
}
publicstaticvoidmain(字符串[]args){
字符串a=“h3e5l!@lo461!28”;
系统输出打印LN(第(a)章);
}
公共静态字符串帽(字符串a){
//数字母
int-letterCount=0;
char[]chars=a.toCharArray();
对于(int i=0;i
能否比“它不工作”更具体?这将返回不正确的结果,例如,对于给定的字符串,它将返回h3e5l@lo461!28这是错误的。它应该返回h3E5l@Lo461!28
如要求所述:将每隔一个字母转换为大写。
您的意思可能是返回新字符串(chars)
@kasptom-即使在进行此更改后,它仍将返回不正确的结果。
public static void main(String[]args){
String a = "h3e5l!@lo461!28" ;
System.out.println(cap(a));
}
public static String cap(String a){
// count letters
int letterCount = 0;
char[] chars = a.toCharArray();
for(int i = 0; i < chars.length; i++){
if(Character.isLetter(chars[i])) {
letterCount += 1;
if(letterCount % 2 == 0) { // every other letter
chars[i] = Character.toUpperCase(chars[i]);
}
}
}
return new String(chars);
}