[英]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.