有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Windows与Mac上的java正则表达式

我有一个使用Java拆分的字符串。它在我的Windows机器上运行得非常好,但在我的Mac上(使用Eclipse)就不行了

我有一个包含单空格和双空格的文本字符串,如下所示:

 August 05   July 09   May 07   April 01   March 19   February 19   January 15   December 17   December 04   December 03   December 02   November 24   October 30

我正在使用

String monthAndDay[] = formattedNewsDates.split("\\s\\s");

同样,我也不知道为什么它可以在Windows上工作,但不能在Mac上工作。一个平台是否以不同的方式理解正则表达式


共 (1) 个答案

  1. # 1 楼答案

    因为您使用的是Eclipse,所以可以调试代码并查看支持Stringchar[]

    或者,您可以用十六进制打印字符串。这是一个快速且(非常)脏的十六进制打印机:

    String s = " August 05   July 09   May 07   April 01   March 19   February 19   January 15   December 17   December 04   December 03   December 02   November 24   October 30";
    for (byte b : s.getBytes("UTF-8"))
        System.out.printf("%02x ", b);
    System.out.println();
    for (byte b : s.getBytes("UTF-8"))
        System.out.print(b >= 32 ? (char)b + "  " : "?  ");
    System.out.println();
    

    输出

    20 41 75 67 75 73 74 20 30 35 20 20 20 4a 75 6c 79 20 30 39 20 20 20 4d 61 79 20 30 37 20 20 20 41 70 72 69 6c 20 30 31 20 20 20 4d 61 72 63 68 20 31 39 20 20 20 46 65 62 72 75 61 72 79 20 31 39 20 20 20 4a 61 6e 75 61 72 79 20 31 35 20 20 20 44 65 63 65 6d 62 65 72 20 31 37 20 20 20 44 65 63 65 6d 62 65 72 20 30 34 20 20 20 44 65 63 65 6d 62 65 72 20 30 33 20 20 20 44 65 63 65 6d 62 65 72 20 30 32 20 20 20 4e 6f 76 65 6d 62 65 72 20 32 34 20 20 20 4f 63 74 6f 62 65 72 20 33 30 
       A  u  g  u  s  t     0  5           J  u  l  y     0  9           M  a  y     0  7           A  p  r  i  l     0  1           M  a  r  c  h     1  9           F  e  b  r  u  a  r  y     1  9           J  a  n  u  a  r  y     1  5           D  e  c  e  m  b  e  r     1  7           D  e  c  e  m  b  e  r     0  4           D  e  c  e  m  b  e  r     0  3           D  e  c  e  m  b  e  r     0  2           N  o  v  e  m  b  e  r     2  4           O  c  t  o  b  e  r     3  0  
    

    如您所见,空格是hex20。十六进制值001F是控制字符,如CRLF。如果字符串包含非ASCII字符,则每个字符将打印为2-4字节,十六进制值为80或更高