Java 按大小写排序
假设您有一个包含大写和小写字符的字符串。我们必须按照特定的案例顺序对给定的字符串进行排序,这意味着如果给定字符串中的第i个位置有一个大写字母,那么新排序的字符串在该位置必须有大写字母,小写字母也是一样。同时,大写字母和小写字母将分别按排序顺序排列。
在本文中,我们将尝试找到给定问题的解决方案。首先,让我们通过一个示例来更好地理解给定的问题。
示例
String st = "KadbHFGtvc";
假设我们手头有上述字符串。那么,排序后的字符串将是 −
Sorted string: “FabcGHKdtv”
您可以看到原始字符串中的第一个位置有一个大写字母,新排序的字符串的第一个字母也是大写字母。第2到第4个字母是小写字母,所以新字符串也有小写字母,但以排序的方式排列。其他位置的字母也是如此。可以看到大写字母和小写字母都是分开排序的。
特定大小写排序程序
让我们讨论一下解决这个问题的方法。
步骤
- 第1步 - 创建一个名为’Case’的类,在其中定义一个名为’sortCase()’的无返回类型的方法,以及一个类型为string的参数’st’。
-
第2步 - 在sortCase()方法中,将给定的字符串转换为字符数组,并将其存储在’chs []’中。然后,我们将使用内置方法’Arrays.sort()’对此数组进行排序。此时,在新排序的数组中,以大写字母’A’到’Z’开头的大写字符首先出现,然后是小写字符’a’到’z’。
-
第3步 - 接下来,声明并初始化两个整数变量’caseUp’和’caseLW’,它们的初始值为-1,分别用于存储大写和小写字母。
-
第4步 - 继续创建一个if块,检查数组’chs []’中的第一个元素是否为大写字母。如果是,则将变量’caseUp’设置为0。
-
第5步 - 创建一个while循环,它将在数组’chs []’的大小之间运行。在这个循环中,我们创建另一个if块,以获取小写字母并将其存储在’caseLw’中。
-
第6步 - 我们知道在Java中字符串是不可变的,因此我们需要创建一个StringBuffer类的对象’new_st’来存储新更新的字符串。
-
第7步 - 现在创建一个for循环,它将在给定字符串’st’的大小之间运行。在这个循环中,我们将定义一个if-else块,以将字符串’st’的大写和小写字符的位置与数组’chs []’进行比较。使用if块,我们将从数组’chs []’中获取小写字符并附加到’new_st’。在else块中,我们将获取大写字符并将它们附加到’new_st’。
-
第8步 - 在主方法中,创建一个’Case’类的对象’obj’来调用方法’sortCase’。
示例
import java.util.*;
public class Case {
public void sortCase(String st) {
// converting string into character array
char chs[] = st.toCharArray();
Arrays.sort(chs);
// sorting the character array
int caseUp = -1;
int caseLw = -1;
if(chs[0] <= 'Z') {
caseUp = 0;
}
int i = 0;
while( i < chs.length) {
if(chs[i] >= 'Z') {
caseLw = i;
break;
}
i++;
}
StringBuffer new_st = new StringBuffer();
for(int j = 0; j < st.length(); j++) {
if(st.charAt(j) >= 'Z') {
new_st.append(chs[caseLw]);
caseLw += 1;
} else {
new_st.append(chs[caseUp]);
caseUp += 1;
}
}
System.out.print("The new String after sorting: " + new_st.toString());
}
public static void main(String[] args) {
String st = "KadbHFGtvc";
System.out.println("The given String: " + st);
Case obj = new Case();
// Object creation
obj.sortCase(st);
// calling the method using object with an argument
}
}
输出
The given String: KadbHFGtvc
The new String after sorting: FabcGHKdtv
结论
在本文中,我们讨论了一个解决给定问题的Java程序。我们使用了Java的String、字符数组和StringBuffer类的概念。