对于像Dingbats(2702 - 27B0)这样的双字节代码
'abcd\u2702efg'
效果很好但是对于像\u1F601
这样的较长代码,这不起作用。
String.fromCharCode(0x1f601)
虽然有效。
main() {
print('abcd\u2702efg');
print('abcd\u1F601efg');
print(new String.fromCharCode(0x1f601));
}
尝试DartPad
有没有办法在Dart中将U+1F601
写成字符串文字?
答案 0 :(得分:12)
将字符代码括在花括号中:
print('abcd\u{1F601}efg');
来自Dart Programming Language Specification, Second Edition的§16.5,“字符串”:
字符串支持特殊字符的转义序列。逃脱是:
- ...
- \ x HEX DIGIT 1 HEX DIGIT 2 ,相当于 \ u { HEX DIGIT 1 HEX DIGIT 2 }。
- \ u HEX DIGIT 1 HEX DIGIT 2 HEX DIGIT 3 HEX DIGIT 4 ,等效 到\ u { HEX DIGIT 1 HEX DIGIT 2 HEX DIGIT 3 HEX DIGIT 4 }。
- \ u { HEX DIGIT SEQUENCE }是代表的unicode标量值 通过 HEX DIGIT SEQUENCE 。如果这是一个编译时错误 HEX DIGIT SEQUENCE 的值不是有效的unicode标量 值。