如何找出字符串中的某个字符是否为大写
How to find out if a certain character in a String is Uppercase
我检查了关于我的问题的所有其他 Whosebug 链接,但那里的答案无效。所以我问了一个类似的问题,希望得到不同的答案。
这是来自 class:
的代码
public String pozisyonHazirla(String param) {
String oynananHamle = param;
for (int n = 0; n < oynananHamle.length(); n++) {
if (oynananHamle.substring(n, 1).matches("[0-9]") || oynananHamle.substring(n, 1).matches(".")) {
String donothing="";
} else if (oynananHamle.substring(n, 1) == oynananHamle.substring(n, 1).toUpperCase()) {
sonuc = "Figür Hamlesi Yapıldı";
break;
} else {
sonuc = "Piyon hamlesi yapıldı";
break;
}
}
return sonuc;
}
问题是这部分代码不起作用,在 100% 的情况下,迭代 returns else 结果是赋给 sonuc 变量的值。
} else if (oynananHamle.substring(n, 1) == oynananHamle.substring(n, 1).toUpperCase()) {
sonuc = "Figür Hamlesi Yapıldı";
break;
我没有打开另一个线程的第二个问题是,在第一种情况下,如果 "if" 语句可行,我不想做任何事情,所以我放了类似“String donothing ="”的内容;" .无论如何改进这段代码?
提前感谢您的回答和评论...
使用isUpperCase()
:
char c = 'A';
boolean upper = Character.isUpperCase(c); // true
关于未使用的 doNothing
代码块,更改:
if (oynananHamle.substring(n, 1).matches("[0-9]") || oynananHamle.substring(n, 1).matches(".")) {
String donothing="";
} else if (oynananHamle.substring(n, 1) == oynananHamle.substring(n, 1).toUpperCase()) {
sonuc = "Figür Hamlesi Yapıldı";
break;
} else {
sonuc = "Piyon hamlesi yapıldı";
break;
}
到
if (oynananHamle.substring(n, 1).equals(oynananHamle.substring(n, 1).toUpperCase())) {
sonuc = "Figür Hamlesi Yapıldı";
break;
}
if (!(oynananHamle.substring(n, 1).matches("[0-9]") || oynananHamle.substring(n, 1).matches(".")) {
sonuc = "Piyon hamlesi yapıldı";
break;
}
编辑:
(完整代码)
public String pozisyonHazirla(String param) {
String oynananHamle = param;
String sonuc = "";
for (int n = 0; n < oynananHamle.length(); n++) {
if (oynananHamle.substring(n, 1).equals(oynananHamle.substring(n, 1).toUpperCase())) {
sonuc = "Figür Hamlesi Yapıldı";
break;
}
if (!(oynananHamle.substring(n, 1).matches("[0-9]") || oynananHamle.substring(n, 1).matches(".")) {
sonuc = "Piyon hamlesi yapıldı";
break;
}
}
return sonuc;
}
问题是==
不比较字符串的内容,它只是检查是否是相同的对象引用。您需要使用 .equals()
来比较实际的字符串。
但是您甚至不需要这样做,因为您可以简单地测试单个字符,这比创建子字符串更有效。
for (int i = 0; i < param.length(); i++) {
char c = param.charAt(i);
if ((c >= '0' && c <= '9') || c == '.') {
continue; // go to next character
} else if (Character.isUppercase(c)) {
return "Figür Hamlesi Yapıldı";
} else {
return "Piyon hamlesi yapıldı";
}
}
大家好,谢谢你们。答案是两种想法的混合,如下:
for (int i = 0; i < oynananHamle.length(); i++) {
char c = oynananHamle.charAt(i);
//if ((c >= '0' && c <= '9') || c == '.') {
// continue; // go to next character
if (Character.isUpperCase(c)) {
sonuc = "Figür Hamlesi Yapıldı :" + c + " "+i;
break;
}
if (!(c >= '0' && c <= '9' || c == '.')) {
sonuc = "Piyon hamlesi yapıldı :" + c + " "+i;
break;
}
}
当然最后还有returnsonuc的声明。再次感谢您。
我检查了关于我的问题的所有其他 Whosebug 链接,但那里的答案无效。所以我问了一个类似的问题,希望得到不同的答案。 这是来自 class:
的代码public String pozisyonHazirla(String param) {
String oynananHamle = param;
for (int n = 0; n < oynananHamle.length(); n++) {
if (oynananHamle.substring(n, 1).matches("[0-9]") || oynananHamle.substring(n, 1).matches(".")) {
String donothing="";
} else if (oynananHamle.substring(n, 1) == oynananHamle.substring(n, 1).toUpperCase()) {
sonuc = "Figür Hamlesi Yapıldı";
break;
} else {
sonuc = "Piyon hamlesi yapıldı";
break;
}
}
return sonuc;
}
问题是这部分代码不起作用,在 100% 的情况下,迭代 returns else 结果是赋给 sonuc 变量的值。
} else if (oynananHamle.substring(n, 1) == oynananHamle.substring(n, 1).toUpperCase()) {
sonuc = "Figür Hamlesi Yapıldı";
break;
我没有打开另一个线程的第二个问题是,在第一种情况下,如果 "if" 语句可行,我不想做任何事情,所以我放了类似“String donothing ="”的内容;" .无论如何改进这段代码? 提前感谢您的回答和评论...
使用isUpperCase()
:
char c = 'A';
boolean upper = Character.isUpperCase(c); // true
关于未使用的 doNothing
代码块,更改:
if (oynananHamle.substring(n, 1).matches("[0-9]") || oynananHamle.substring(n, 1).matches(".")) {
String donothing="";
} else if (oynananHamle.substring(n, 1) == oynananHamle.substring(n, 1).toUpperCase()) {
sonuc = "Figür Hamlesi Yapıldı";
break;
} else {
sonuc = "Piyon hamlesi yapıldı";
break;
}
到
if (oynananHamle.substring(n, 1).equals(oynananHamle.substring(n, 1).toUpperCase())) {
sonuc = "Figür Hamlesi Yapıldı";
break;
}
if (!(oynananHamle.substring(n, 1).matches("[0-9]") || oynananHamle.substring(n, 1).matches(".")) {
sonuc = "Piyon hamlesi yapıldı";
break;
}
编辑:
(完整代码)
public String pozisyonHazirla(String param) {
String oynananHamle = param;
String sonuc = "";
for (int n = 0; n < oynananHamle.length(); n++) {
if (oynananHamle.substring(n, 1).equals(oynananHamle.substring(n, 1).toUpperCase())) {
sonuc = "Figür Hamlesi Yapıldı";
break;
}
if (!(oynananHamle.substring(n, 1).matches("[0-9]") || oynananHamle.substring(n, 1).matches(".")) {
sonuc = "Piyon hamlesi yapıldı";
break;
}
}
return sonuc;
}
问题是==
不比较字符串的内容,它只是检查是否是相同的对象引用。您需要使用 .equals()
来比较实际的字符串。
但是您甚至不需要这样做,因为您可以简单地测试单个字符,这比创建子字符串更有效。
for (int i = 0; i < param.length(); i++) {
char c = param.charAt(i);
if ((c >= '0' && c <= '9') || c == '.') {
continue; // go to next character
} else if (Character.isUppercase(c)) {
return "Figür Hamlesi Yapıldı";
} else {
return "Piyon hamlesi yapıldı";
}
}
大家好,谢谢你们。答案是两种想法的混合,如下:
for (int i = 0; i < oynananHamle.length(); i++) {
char c = oynananHamle.charAt(i);
//if ((c >= '0' && c <= '9') || c == '.') {
// continue; // go to next character
if (Character.isUpperCase(c)) {
sonuc = "Figür Hamlesi Yapıldı :" + c + " "+i;
break;
}
if (!(c >= '0' && c <= '9' || c == '.')) {
sonuc = "Piyon hamlesi yapıldı :" + c + " "+i;
break;
}
}
当然最后还有returnsonuc的声明。再次感谢您。