Here you can find the source of endsWithIgnoreCase(String s, String w)
public static boolean endsWithIgnoreCase(String s, String w)
//package com.java2s; public class Main { private static char[] lowercases = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177' }; public static boolean endsWithIgnoreCase(String s, String w) { if (w == null) return true; int sl = s.length(); int wl = w.length(); if (s == null || sl < wl) return false; for (int i = wl; i-- > 0;) { char c1 = s.charAt(--sl); char c2 = w.charAt(i); if (c1 != c2) { if (c1 <= 127) c1 = lowercases[c1]; if (c2 <= 127) c2 = lowercases[c2]; if (c1 != c2) return false; }//from ww w . ja v a 2 s. c o m } return true; } }