Когда строка читается, я предполагаю, что происходит то, что она интерпретируется как литерал, а не как она должна быть (кодовые точки), т.е. каждый символ \ 0027 является отдельным символом.На самом деле вы можете исправить это в зависимости от того, как вы получаете доступ к API - см. Dart convert library .Если вы используете utf8.decode для необработанных данных, вы сможете избежать всей этой проблемы.
Однако, если это не вариант, есть достаточно простое решение для вас.
Что происходит, когдавы пишете свое регулярное выражение или заменяете его тем, что вы не избегаете обратной косой черты, так что по сути это становится ничем.Если вы используете двойную косую черту, это решит проблему, поскольку она экранирует escape-символ."\\"
=> "\"
.
Другой вариант - использовать необработанную строку, такую как r"\"
, которая игнорирует escape-символ.
Вставьте это в https://dartpad.dartlang.org:
String withapostraphe = "What\u0027s this?";
String withapostraphe1 = withapostraphe.replaceAll('\u0027', '');
String withapostraphe2 = withapostraphe.replaceAll(String.fromCharCode(0x27), '');
print("Original encoded properly: $withapostraphe");
print("Replaced with nothing: $withapostraphe1");
print("Using char code for ': $withapostraphe2");
String unicodeNotDecoded = "What\\u0027s this?";
String unicodeWithApostraphe = unicodeNotDecoded.replaceAll('\\u0027', '\'');
String unicodeNoApostraphe = unicodeNotDecoded.replaceAll('\\u0027', '');
String unicodeRaw = unicodeNotDecoded.replaceAll(r"\u0027", "'");
print("Data as read with escaped unicode: $unicodeNotDecoded");
print("Data replaced with apostraphe: $unicodeWithApostraphe");
print("Data replaced with nothing: $unicodeNoApostraphe");
print("Data replaced using raw string: $unicodeRaw");
Чтобы увидеть результат:
Original encoded properly: What's this?
Replaced with nothing: Whats this?
Using char code for ': Whats this?
Data as read with escaped unicode: What\u0027s this?
Data replaced with apostraphe: What's this?
Data replaced with nothing: Whats this?
Data replaced using raw string: What's this?