如何在没有方法 toUppercase 的情况下在字符串中获取大写字母而不是小写字母。 P.S 以下
How to get upper case instead of lower case in a string without method toUppercase. P.S below
如何在不使用 toUppercase 方法的情况下在字符串中获取大写而不是小写,但字符串中的其他符号不应更改
package com.telukhin.hw6;
public class Task1 {
public static void main(String[] args) {
} private static String lowerCase(String s) {
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if(ch >= 'a' && ch < 'z') {
ch = ch - '32';
}
}
}
}
- 小写字符a到z的ASCII值范围是97到122
- 大写字符A到Z的ASCII值范围是65到92
- 为了转换,我们从输入字符的 ASCII 值中添加 32。
在您的 if 语句中添加:
ch = ch + 32;
您可以按照以下方式进行:
public class Task1 {
public static void main(String[] args) {
System.out.println(lowerCase("HELLO"));
}
private static String lowerCase(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch >= 65 && ch <= 90)
sb.append((char)(ch+32));
else
sb.append((char)ch);
}
return sb.toString();
}
}
输出:
hello
请检查https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html以供参考。
更新: 添加一个方法将 String
也转换为大写
public class Task1 {
public static void main(String[] args) {
System.out.println(lowerCase("HELLO"));
System.out.println(upperCase("hello"));
}
private static String lowerCase(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch >= 65 && ch <= 90) //ASCII value of 'A'is 65 and that of 'Z' is 90
sb.append((char)(ch+32));
else
sb.append((char)ch);
}
return sb.toString();
}
private static String upperCase(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch >= 97 && ch <= 122) //ASCII value of 'a'is 97 and that of 'z' is 122
sb.append((char)(ch-32));
else
sb.append((char)ch);
}
return sb.toString();
}
}
输出:
hello
HELLO
假设这不是家庭作业,即不使用 toUppercase 的限制意味着,您可以这样做:
public class Main
{
public static void main(String[] argv)
{
final String upper = toUpperCase("HELLO1234@world.CoM");
System.out.println(upper);
}
private static String toUpperCase(final String s)
{
final StringBuilder builder = new StringBuilder();
for(final char c : s.toCharArray())
{
final char upper = Character.toUpperCase(c);
builder.append(upper);
}
return builder.toString();
}
}
这将处理非 ascii 字符。或者,您仍然可以使用 65 位和 90 位代替 Character.toUpperCase
再举一个例子。这会将字符串转换为字符数组以供使用,然后使用结果创建一个新字符串。好像比使用charAt、StringBuilder等更方便
与许多其他答案一样,仅对同样出现在 ASCII 中的 26 个字母有效。
class Foo {
public static String upcase(String str) {
char[] arr = str.toCharArray();
for (int k=0; k<arr.length; k++) {
if (arr[k] >= 'a' && arr[k] <= 'z') {
arr[k] -= ('a'-'A');
}
}
return new String(arr);
}
public static void main(String... args) {
String test = "a9z A?Z";
System.out.println(test + " ==> " + upcase(test));
}
}
如何在不使用 toUppercase 方法的情况下在字符串中获取大写而不是小写,但字符串中的其他符号不应更改
package com.telukhin.hw6;
public class Task1 {
public static void main(String[] args) {
} private static String lowerCase(String s) {
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if(ch >= 'a' && ch < 'z') {
ch = ch - '32';
}
}
}
}
- 小写字符a到z的ASCII值范围是97到122
- 大写字符A到Z的ASCII值范围是65到92
- 为了转换,我们从输入字符的 ASCII 值中添加 32。
在您的 if 语句中添加:
ch = ch + 32;
您可以按照以下方式进行:
public class Task1 {
public static void main(String[] args) {
System.out.println(lowerCase("HELLO"));
}
private static String lowerCase(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch >= 65 && ch <= 90)
sb.append((char)(ch+32));
else
sb.append((char)ch);
}
return sb.toString();
}
}
输出:
hello
请检查https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html以供参考。
更新: 添加一个方法将 String
也转换为大写
public class Task1 {
public static void main(String[] args) {
System.out.println(lowerCase("HELLO"));
System.out.println(upperCase("hello"));
}
private static String lowerCase(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch >= 65 && ch <= 90) //ASCII value of 'A'is 65 and that of 'Z' is 90
sb.append((char)(ch+32));
else
sb.append((char)ch);
}
return sb.toString();
}
private static String upperCase(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch >= 97 && ch <= 122) //ASCII value of 'a'is 97 and that of 'z' is 122
sb.append((char)(ch-32));
else
sb.append((char)ch);
}
return sb.toString();
}
}
输出:
hello
HELLO
假设这不是家庭作业,即不使用 toUppercase 的限制意味着,您可以这样做:
public class Main
{
public static void main(String[] argv)
{
final String upper = toUpperCase("HELLO1234@world.CoM");
System.out.println(upper);
}
private static String toUpperCase(final String s)
{
final StringBuilder builder = new StringBuilder();
for(final char c : s.toCharArray())
{
final char upper = Character.toUpperCase(c);
builder.append(upper);
}
return builder.toString();
}
}
这将处理非 ascii 字符。或者,您仍然可以使用 65 位和 90 位代替 Character.toUpperCase
再举一个例子。这会将字符串转换为字符数组以供使用,然后使用结果创建一个新字符串。好像比使用charAt、StringBuilder等更方便
与许多其他答案一样,仅对同样出现在 ASCII 中的 26 个字母有效。
class Foo {
public static String upcase(String str) {
char[] arr = str.toCharArray();
for (int k=0; k<arr.length; k++) {
if (arr[k] >= 'a' && arr[k] <= 'z') {
arr[k] -= ('a'-'A');
}
}
return new String(arr);
}
public static void main(String... args) {
String test = "a9z A?Z";
System.out.println(test + " ==> " + upcase(test));
}
}