Я хочу прочитать файл и определить, является ли символ после символа цифрой или словом.Если это число, я хочу удалить перед ним символ, перевести число в двоичное и заменить его в файле.Если это слово, сначала я хочу установить для символов число 16, но затем, если используется другое слово, я хочу добавить 1 к исходному числу.Вот что я хочу:
Если имя файла читается (... представляет строку, которую не нужно переводить):
%10
...
%firststring
...
%secondstring
...
%firststring
...
%11
...
and so on...
Я хочу, чтобы это выглядело так:
0000000000001010 (10 in binary)
...
0000000000010000 (16 in binary)
...
0000000000010001 (another word was used, so 16+1 = 17 in binary)
...
0000000000010000 (16 in binary)
...
0000000000001011 (11 in binary)
И вот что я попробовал: anyLines - это просто строковый массив, в котором содержится содержимое файла (если бы я сказал System.out.println (anyLines [i]), я бы использовал содержимое файла.распечатано).
ОБНОВЛЕНО!
try {
ReadFile files = new ReadFile(file.getPath());
String[] anyLines = files.OpenFile();
int i;
int wordValue = 16;
// to keep track words that are already used
Map<String, Integer> wordValueMap = new HashMap<String, Integer>();
for (String line : anyLines) {
// if line doesn't begin with &, then ignore it
if (!line.startsWith("@")) {
continue;
}
// remove
line = line.substring(1);
Integer binaryValue = null;
if (line.matches("\\d+")) {
binaryValue = Integer.parseInt(line);
}
else if (line.matches("\\w+")) {
binaryValue = wordValueMap.get(line);
// if the map doesn't contain the word value, then assign and store it
if (binaryValue == null) {
binaryValue = wordValue;
wordValueMap.put(line, binaryValue);
++wordValue;
}
}
// I'm using Commons Lang's StringUtils.leftPad(..) to create the zero padded string
System.out.println(Integer.toBinaryString(binaryValue));
}
Теперь мне нужно только заменить символы (% 10,% firststring и т. д.) надвоичное значение.
После выполнения этого кода в качестве вывода я получаю:
1010
10000
10001
10000
1011
%10
...
%firststring
...
%secondstring
...
%firststring
...
%11
...
Теперь мне просто нужно заменить% 10 на 1010, строку% firststring на 10000 и т. д.чтобы файл выглядел так:
0000000000001010 (10 in binary)
...
0000000000010000 (16 in binary)
...
0000000000010001 (another word was used, so 16+1 = 17 in binary)
...
0000000000010000 (16 in binary)
...
0000000000001011 (11 in binary)
Есть ли у вас какие-либо предложения о том, как заставить эту работу работать?