Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

Trimmed characters by trim() are different between languages

String object in .NET (PowerShell), JavaScript, and Java all have trim() method. But trimmed characters by trim() are different between these languages.

# codepoint .NET JavaScript Java
1 0000-0008
2 0009-000D
3 000E-001F
4 0020
5 0085
6 00A0
7 1680
8 180E
9 2000-200A
10 2028-2029
11 202F
12 205F
13 3000
14 FEFF

JavaScript on Chrome 57.0

for (var i=0x0000; i<=0xffff; i++) { if (!String.fromCodePoint(i).trim().length) { console.log(i.toString(16).toUpperCase()); } }
9
A
B
C
D
20
A0
1680
180E
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
200A
2028
2029
202F
205F
3000
FEFF

PowerShell 6.0

PS > 0x0000..0xffff | ForEach-Object { $_.ToString("X4") } | ForEach-Object { if ((ConvertFrom-CodePoint -CodePoint $_ -From 1201).trim().length -eq 0) { $_ } }
0009
000A
000B
000C
000D
0020
0085
00A0
1680
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
200A
2028
2029
202F
205F
3000

Java 1.8.0 (http://www.javarepl.com/)

java> for (char i=0x0000; i<0xffff; i++) { if (Character.toString(i).trim().length() == 0) { System.out.println(String.format("%04X", Character.toString(i).codePointAt(0))); } }
0000
0001
0002
0003
0004
0005
0006
0007
0008
0009
000A
000B
000C
000D
000E
000F
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
001A
001B
001C
001D
001E
001F
0020