Здравствуйте! Не могу понять, почему регулярные выражения пропускают буквы верхнего регистра: я же явно указываю на нижний регистр [abcdef] ?
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static void main(String[] args) {
String binaryNumber = "100111010000";
System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber));
String hexNumber = "9d0";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
}
public static String toHex(String binaryNumber) {
if (binaryNumber == null || binaryNumber.equals("")) return "";
Pattern pattern3 = Pattern.compile("[ 1 2]");
java.util.regex.Matcher matcher3 = pattern3.matcher(binaryNumber);
if (matcher3.find()) {
int decimalNumber = 0;
String shestnadsStrok = "";
for (int i = 0; i < binaryNumber.length(); i++) {
int index = binaryNumber.length() - 1 - i;
int value = Character.getNumericValue(binaryNumber.charAt(index));
decimalNumber += value * Math.pow(2, i);
}
String HEX = "0123456789abcdef";
while (decimalNumber != 0) {
char c = HEX.charAt(decimalNumber % 16);
shestnadsStrok = c + shestnadsStrok;
decimalNumber = decimalNumber / 16;
}
return shestnadsStrok;
} else return "";
}
public static String toBinary(String hexNumber) {
if (hexNumber == null || hexNumber.equals("")) return "";
Pattern pattern1 = Pattern.compile("[abcdef]");
java.util.regex.Matcher matcher1 = pattern1.matcher(hexNumber);
if (matcher1.find()) {
int desyatInt = 0;
for (int i = 0; i < hexNumber.length(); i++) {
int index = hexNumber.length() - 1 - i;
int value = Character.getNumericValue(hexNumber.charAt(index));
desyatInt += value * Math.pow(16, i);
}
String binaryNumber = "";
while (desyatInt != 0) {
binaryNumber = desyatInt % 2 + binaryNumber;
desyatInt = desyatInt / 2;
}
return binaryNumber;
} else {
return "";
}
}
}