2017-07-25 49 views
0

所以我环顾四周为一两天了类似的问题现在看起来这是一个新课题。对于一个小项目,我试图手动编写我自己的compareToIgnoreCase()方法,而不使用字符串API。在程序中,用户输入一个字符串,类定义将字符串转换为char数组。用户将输入另一个字符串,并将其与输入的第一个字符串进行比较。这是我写的compareTo()方法。我的问题是,如何编辑这个比较时忽略该案例。写我自己与compareToIgnoreCase方法

public int compareTo(MyString anotherMyString) { 
    if(anotherMyString.sequence[i] > 0) { 
     return 1; 
    } else if(anotherMyString.sequence[i] == 0) { 
     return 0; 
    } else { 
     return -1; 
    } 
} 
+2

我想你错过了一个循环或递归的地方,因为'i'变量被宣布无处 –

+2

正在使用'Character'API吗?你需要支持所有的Unicode字母,还是只支持A-Z字母? – Andreas

回答

2

假设你确定使用java.lang.Character,一个可能的解决方案忽视的情况是将每个烧焦比较之前为小写:

char1 = Character.toLowerCase(char1); 
char2 = Character.toLowerCase(char2); 

// compare char1, char2 
+0

问题说*“不使用字符串的API”*。我会考虑使用的API *字符*会越限太多,但我想只有OP可以说,肯定*([我已经张贴问题OP(https://stackoverflow.com/questions/ 45310354 /写 - 我 - 拥有 - 与compareToIgnoreCase法#comment77583121_45310354))*。 – Andreas

+0

我以为他只是不想'java.lang.String' – frozen

+0

是的,任何API是关闭的限制。 –

0

您可以使用以下逻辑,代码

char charInput[] = new char[]{'A', 'B', 'C'}; 
for (int i = 0; i < charInput.length; i++) 
{ 
    char a = charInput[i]; 
    //This will make your char to lower case if it is in uppercase. 
    if(a >=65 && a<= 90) 
     a+=32; 
    charInput[i] = a; 
} 

所以,基本上我们会转换小写字母数组,以便您可以轻松地在两个字符数组之间进行比较。

+0

数字和特殊字符不区分大小写。此代码只能将大写字母转换为小写字母。你不必担心数字和特殊字符。这个逻辑适用于所有人。 –

+0

我需要循环两个数组,将它们都转换为小写,然后进行比较? –

+0

是的,你必须以小写字母转换这两个数组。然后循环比较两个数组。这样你的所有角色都会变成小写字母。而且您不会遇到任何区分大小写的问题。 –