我正在尝试编写一个程序来更改字符串中两个字符的大小写(将大写字母更改为小写字母,反之亦然)。它已编译,但字符串是相同的。
String newChar1 = caseChanger("DcoderIsCool", 3);
String newChar2 = caseChanger("DcoderIsCool", 8);
我认为问题出在我使用的方法上:
public static String caseChanger (String s, int ind) {
if(!(Character.isUpperCase(s.charAt(ind)))) {
//checking if the character is uppercase or lowercase
return s.substring(ind, ind + 1).toLowerCase();
} else {
return s.substring(ind, ind + 1).toUpperCase();
}
}
输出应该是“ DcoDerIscool”,但它是“ DcoderIsCool”(原始字符串)。
答案 0 :(得分:1)
希望我的理解正确。
下面的代码将为您提供输出DcoDerIsCool
和DcoderIscool
。
public static String caseChanger(String s, int ind) {
char[] charArr = s.toCharArray();
if (!(Character.isUpperCase(s.charAt(ind)))) {
charArr[ind] = Character.toUpperCase(s.charAt(ind));
} else {
charArr[ind] = Character.toLowerCase(s.charAt(ind));
}
return String.valueOf(charArr);
}
答案 1 :(得分:0)
我认为这就是您要寻找的
public static String caseChanger (String s, int ind) {
if((Character.isUpperCase(s.charAt(ind)))) { //checking if the character is uppercase or lowercase
return new StringBuilder(s).replace(ind,ind+1,s.substring(ind, ind + 1).toLowerCase()).toString();
}
else {
return new StringBuilder(s).replace(ind,ind+1,s.substring(ind, ind + 1).toUpperCase()).toString(); }
}
因此,您只更改n个字符,并返回多余的not旁边的那些已更改的字符!您添加的意思是您的条件是否相反。但是,您要寻找的是在原始String中所需的位置替换字符。如果我没错的话。 希望对您有帮助
答案 2 :(得分:0)
首先将您的字符串转换为char数组,然后在特定索引处找到该字符,并检查其是否为小写,然后将其转换为大写,如果是大写,则将其转换为小写并采用字符串生成器对象,将转换后的字符添加到其中。
import android.arch.persistence.room.TypeConverter;
import org.joda.time.DateTime;
public class DateTimeConverter {
@TypeConverter
public static DateTime toDateTime(Long millis) {
return millis == null ? null : new DateTime(millis);
}
@TypeConverter
public static Long toMillis(DateTime dateTime) {
return dateTime == null ? null : dateTime.getMillis();
}
}
答案 3 :(得分:0)
您从字符串中提取了字符,但没有放回字符串中 s.substring(ind,ind + 1).toLowerCase()应用于单个字符
代替返回s.substring(ind,ind +1).toLowerCase();
将CaseChanged字符替换回原始字符串。