Игнорирование побегов - Java
Я пытался создать способ кодирования строк в Java, но я столкнулся с большим препятствием.
Моя проблема в том, что я не могу игнорировать побеги, такие как \n \u \. (Они тоже кодируются.)
Я потратил 3 часа на эту проблему, и вот мой код.
public Object encode() throws EncodingException {
String encoded = "";
if (!isEncoded) {
int i = 0;
char[] alpha = (this.value.toString().toCharArray());
while (!(i >= alpha.length)) {
i++;
try {
if(!(alpha[i - 1] == '\\')){
encoded = encoded
+ SerializeEncoding.encoding.encodings.get(
new String(new char[] { alpha[i - 1] }))
.toString();
}else{
encoded = encoded
+ alpha[i - 1] + alpha[i];
i++;
}
} catch (NullPointerException e) {
encoded = encoded
+ new String(new char[] { alpha[i - 1] })
.toString();
}
}
encodedValue = (Object) encoded;
isEncoded = true;
log = encodedValue;
return (Object) encodedValue;
} else {
throw new EncodingException("Already encoded");
}
}
Спасибо, Керлип
PS. Скажи мне, если я что-то пропустил.
2 ответа
Я не очень ясно с вашим требованием, вы можете позаботиться о всех специальных символов в Java, перебирая строку
public static void main(String[] args) {
String before = "test\ntest1\n";
final StringBuilder result = new StringBuilder();
final StringCharacterIterator iterator = new StringCharacterIterator(before);
char character = iterator.current();
while (character != CharacterIterator.DONE ){
// do whatever you want to do with the char... I am just removing the \n
if (character == '\n') {
character = iterator.next();
} else {
result.append(character);
}
character = iterator.next();
}
System.out.println(result.toString());
}
Один из вариантов может быть следующим. Пожалуйста, оптимизируйте код.
String before = "test\ntest1\n";
String after = "";
String [] str = before.split("\n");
for (String string : str) {
after = after+encode(string)+"\n";
}