Dlaczego nie mogę używać \u000D i \u000a jako CR i LF w Javie?
Dlaczego nie mogę używać \u000d i \u000a jako CR i LF w Javie? To daje błąd podczas kompilacji kodu:
String x = "\u000A hello";//Error - Illegal escape character in string literal.
2 answers
Znaki specjalne Unicode są wstępnie przetwarzane przed uruchomieniem kompilatora. Dlatego, jeśli umieścisz \u000A
w łańcuchu literalnym w taki sposób:
String someString = "foo\u000Abar";
Zostanie skompilowany dokładnie tak, jakbyś napisał:
String someString = "foo
bar";
Stick to \r
(carriage return; 0x0D
) and \n
(line feed; 0x0A
)
Bonus: zawsze możesz się z tym dobrze bawić, zwłaszcza biorąc pod uwagę ograniczenia większości zakreślaczy składni. Następnym razem spróbuj uruchomić ten kod:
public class FalseIsTrue {
public static void main(String[] args) {
if ( false == true ) { //these characters are magic: \u000a\u007d\u007b
System.out.println("false is true!");
}
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-05 17:47:36
Ponieważ mieści się w zakresie znaków sterujących Unicode
Czyli U+0000–U+001F
i U+007F
.
Znaki sterujące Unicode są używane do kontrolowania interpretacji lub wyświetlanie tekstu, ale same te znaki nie mają wizualnego lub reprezentacja przestrzenna.
Można ich uniknąć używając \
jak opisano w powyższej odpowiedzi przez @ Mark
FROM RFC:
2.5. Stringi
The reprezentacja łańcuchów to podobne do konwencji stosowanych w C rodzina języków programowania. A ciąg zaczyna się i kończy cudzysłowem marks. Wszystkie znaki Unicode mogą być umieszczone w cudzysłowie z wyjątkiem znaków, które muszą być Escape: cudzysłów, rewers solidus i znaki sterujące (U + 0000 do U + 001F).
Każdy znakMoże zostać uniknięty.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-20 11:47:45