Java - 方法忽略大写 -> 小写转换
Java - Method ignores Upper -> Lowercase tranformation
一个关于ASCII和java的问题:
我正在使用 java 读取文件,所有这些文件都包含大写字母,我应该将其转换为小写字母,以便用另一种算法处理它们,该算法查找从两个文件读取的序列之间的匹配项。
该算法包含这种比较:
for(int j = 0; j < pattern.length(); ++j)
{
//char a has a certain decimal value, so whatever char subtracted to char a
//will be an index between 0 and 25
int c = pattern.charAt(j) - 'a';
读取文件的算法如下所示:
无论如何,每当我读取文件时,我都会收到由变量文本引起的错误,该文本应该只有小写字母。
此错误:ArrayIndexOutOfBoundsException caughtjava.lang.ArrayIndexOutOfBoundsException:索引 -87 超出长度 26
的范围
当我使用带有小写字母的预定义字符串时,一切正常,唯一的问题出现在我从文件中读取文本时。
在java中还有其他方法可以将大写字母转换为小写字母吗?
如能指出我的错误,将不胜感激。
非常感谢您!
来自异常的消息是 java.lang.ArrayIndexOutOfBoundsException: Index -87
。
这意味着表达式 pattern.charAt(j) - 'a'
产生值 -87,这反过来意味着 pattern.charAt(j)
必须具有值 10,即 '\n' 的值 - 行分隔符.
您的文本文件似乎不仅包含字母字符,而且至少包含一个行分隔符。
有一些可能的解决方案:
trim()
您从文件中读取的文本:
text = new String(Files.readAllBytes(path)).toLowerCase().trim();
跳过算法中不在 'a' 到 'z' 范围内的所有内容:
int c = pattern.charAt(j) - 'a';
if (c < 0 || c > 25) continue;
一个关于ASCII和java的问题: 我正在使用 java 读取文件,所有这些文件都包含大写字母,我应该将其转换为小写字母,以便用另一种算法处理它们,该算法查找从两个文件读取的序列之间的匹配项。 该算法包含这种比较:
for(int j = 0; j < pattern.length(); ++j)
{
//char a has a certain decimal value, so whatever char subtracted to char a
//will be an index between 0 and 25
int c = pattern.charAt(j) - 'a';
读取文件的算法如下所示:
无论如何,每当我读取文件时,我都会收到由变量文本引起的错误,该文本应该只有小写字母。 此错误:ArrayIndexOutOfBoundsException caughtjava.lang.ArrayIndexOutOfBoundsException:索引 -87 超出长度 26
的范围当我使用带有小写字母的预定义字符串时,一切正常,唯一的问题出现在我从文件中读取文本时。
在java中还有其他方法可以将大写字母转换为小写字母吗?
如能指出我的错误,将不胜感激。
非常感谢您!
来自异常的消息是 java.lang.ArrayIndexOutOfBoundsException: Index -87
。
这意味着表达式 pattern.charAt(j) - 'a'
产生值 -87,这反过来意味着 pattern.charAt(j)
必须具有值 10,即 '\n' 的值 - 行分隔符.
您的文本文件似乎不仅包含字母字符,而且至少包含一个行分隔符。
有一些可能的解决方案:
trim()
您从文件中读取的文本:text = new String(Files.readAllBytes(path)).toLowerCase().trim();
跳过算法中不在 'a' 到 'z' 范围内的所有内容:
int c = pattern.charAt(j) - 'a'; if (c < 0 || c > 25) continue;