[英]How to check if character at current index in for loop is a specific character (e.g. the letter A, the number 2, etc)?
我正在用Java构建一个简单的程序,该程序可以找到字符串中的字母并将其替换为数字,但是我很难找到一种方法来检查确切的特定字符。 一般来说,数字和字母都有很多。
正如我的for循环所代表的那样,无论它是否在start和end指定的范围内,它都将在各处替换该字母。
任何帮助,将不胜感激。
String str = "A.A.A.A.A.A.A.A";
int start = 3;
int end = 9;
for (int i = start; i < end; i++) {
if (Character.isLetter(str.charAt(i)) {
str = str.replaceAll("A", "9");
return str;
预期产量:
AA9.9.9.AAA
实际输出:
9.9.9.9.9.9.9.9
在您的代码中,您有
str = str.replaceAll("A", "9");
这将替换所有出现的A
到9
而不是您的方法,您应该
1.将字符串转换为char数组
char[] charArray = str.toCharArray();
2.然后用数字替换每次出现的字符
if (Character.isLetter(charArray[i])){
//Character Found
charArray[i] = '9';
}
3.使用将其转换回字符串
str = String.valueOf(charArray);
修改后的代码:
String str = "A.A.A.A.A.A.A.A";
int start = 3;
int end = 9;
//Converting String to char array
char[] charArray = str.toCharArray();
for (int i = start; i < end; i++) {
if (Character.isLetter(charArray[i])){
//Character Found
charArray[i] = '9';
}
}
//Converting Back to String
str = String.valueOf(charArray);
System.out.println(charArray);
System.out.println(str);
比较字符是否相等,然后使用字符串生成器替换指定的字符
//Use of StringBuffer preferred over String as String are immutable
StringBuilder sb = new StringBuilder(str);
// -1 to start as index start from 0
for (int i = start-1; i < end; i++) {
char currentChar = currentString.charAt(i);
if (currentChar == "A") {
sb.setCharAt(i, '9');
}
}
return sb.toString();
我会那样做。 剪下绳子以隔离要作用的部分,然后将其全部重新缝合在一起:
String str = "A.A.A.A.A.A.A.A";
int startIndex = 3;
int endIndex = 9;
String beginning = str.substring(0, startIndex);
String middle = str.substring(startIndex, endIndex);
String end = str.substring(endIndex);
middle = middle.replaceAll("A", "9");
String result = beginning + middle + end;
System.out.println(result);
打印输出:
A.A.9.9.9.A.A.A
编辑:
如评论中所建议,您可以在一行中完成
String str = "A.A.A.A.A.A.A.A";
int startIndex = 3;
int endIndex = 9;
String result =
str.substring(0, startIndex) +
str.substring(startIndex, endIndex).replaceAll("A", "9") +
str.substring(endIndex);
这是一个使用子字符串的示例,可让您选择要测试的字符串的哪一部分
int start = 3;
int end = 9;
String str = "A.A.A.A.A.A.A.A";
String startStr = str.substring(0,start);
String endStr = str.substring(end);
String newStr="";
char temp=' ';
for (int i = start; i < end; i++) {
temp = str.charAt(i);
if (temp=='A')
newStr+="9";
else
newStr += temp;
}
return(startStr + newStr + endStr);
您将替换字符串中找到的所有匹配项,而不是指定需要替换的索引。
使用StringBuffer的 replace
方法如下:
public static void main(String[] args) {
String str = "AAAAAAAA";
int start = 3;
int end = 9;
str = replaceBetweenIndexes(str, start, end, "9"); // AAA999AA
str = replaceBetweenIndexes("ABCD6EFG", start, end, "3"); // ABC363FG
}
public static String replaceBetweenIndexes(String str, int start, int end, String replaceWith) {
StringBuffer strBuf = new StringBuffer(str);
for (int i = start; i < end; i++) {
if (Character.isLetter(strBuf.charAt(i)) {
strBuf.replace(i, i+1, replaceWith);
}
}
return strBuf.toString();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.