“按字典顺序比较两个字符串”是什么意思?
答案 0 :(得分:147)
来自@Bozho和@aioobe的答案,词典比较类似于字典中的排序。
Java String类提供.compareTo ()
方法,以便按字典顺序比较字符串。它像"apple".compareTo ("banana")
一样使用。
此方法的返回值为int
,可解释如下:
compareTo
方法的参数首先按字典顺序排列。更具体地说,该方法提供了ASCII值的第一个非零差异。
因此"computer".compareTo ("comparison")
将返回值(int) 'u' - (int) 'a'
(20)。由于这是一个积极的结果,参数("comparison"
)首先按字典顺序排列。
还有一个变种.compareToIgnoreCase ()
,例如0
会返回"a".compareToIgnoreCase ("A");
。
答案 1 :(得分:10)
措辞“比较”有轻微的误导性。你不是在比较严格的相等,而是在字典(词典)中首先出现字符串。
这是允许字符串集合可排序的功能。
请注意,非常依赖于活动区域设置。例如,在丹麦,我们有一个字符“å”,使用拼写为“aa”,与两个单独的a非常不同(编辑:如果发音为 “一个”!)。因此,丹麦的排序规则将两个连续的a与“å”相同,这意味着它在z之后。这也意味着丹麦语词典的排序与英语词典或瑞典词典不同。
答案 2 :(得分:8)
String.compareTo(..)
方法执行词典比较。按字典顺序== alphebetically。
答案 3 :(得分:8)
顺序比较彼此具有相同位置的字母..更像是如何在字典中订购单词
答案 4 :(得分:6)
如果您检查词典中哪个字符串首先出现,那么您已经对字符串进行了字典比较!
一些链接:
从后一个链接中被盗:
如果
,字符串s以字典顺序排列在字符串t之前
- s 是 t 或
的前缀- 如果 c 且 d 分别是 s 和 t 的第一个字符,其中 s 和 t 不同, c 按字符顺序排在 d 之前。
注意:对于字母字符,字符顺序与字母顺序一致。数字位于字母前面,大写字母位于小写字母之前。
示例:
- 房子先于家庭
- 家庭先于家庭
- 作曲家先于电脑
- H2O在酒店之前
答案 5 :(得分:1)
Java按字典顺序排列:
奇怪的是,这似乎是......我必须编写比较器链才能更改默认行为。
使用以下代码片段,使用更好的输入字符串示例来验证订单(您将需要JSE 8):
{{1}}
<强> 1Bmbiza
本杰明
海莉
Jakey
Kambiz
萨曼莎
k1ambiz
kambiz 强>
请注意,这是特定于区域设置的答案 请注意,我正在过滤包含小写字母a的名称。
答案 6 :(得分:0)
Algo下面“按字典顺序比较两个字符串”
输入两个字符串,字符串1和字符串2。
为(int i = 0; i (遍历两者的每个字符
字符串比较它们直到一个
的字符串终止): a。如果两个字符的unicode值
相同然后继续; b。如果Unicode字符的值
字符串1和字符串2的unicode值
不同于返回(str1 [i] -str2 [i])
如果字符串1的长度小于字符串2
返回str2 [str1.length()]
其他
返回str1 [str2.length()]
//此方法按字典顺序比较两个字符串
public static int compareCustom(String s1, String s2) {
for (int i = 0; i < s1.length() && i< s2.length(); i++) {
if(s1.charAt(i) == s2.charAt(i)){
//System.out.println("Equal");
continue;
}
else{
return s1.charAt(i) - s2.charAt(i);
}
}
if(s1.length()<s2.length()){
return s2.length() - s1.length();
}
else if(s1.length()>s2.length()){
return s1.length()-s2.length();
}
else{
return 0;
}
}
如果两个String相等,则返回0,否则返回Negative或 正值
来源:-Source