解释用JAVA编写的这一行


问题内容

在HACKERRANK中,这行代码非常频繁地出现。我认为这是跳过空格,但那是什么"\r\u2028\u2029\u0085"意思

 scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

问题答案:

Scanner.skip跳过与模式匹配的输入,这里的模式是:-

(\ r \ n | [\ n \ r \ u2028 \ u2029 \ u0085])?

  • ?精确匹配零或前一个字符。
  • | 另类
  • []匹配出现在单个字符
  • \ r匹配回车符
  • \ n换行符

  • \ u2028将字符与索引为2018的基数16(8232的基数10或20050的基数8)区分大小写

  • \ u2029将字符与索引为2029 base 16(8233 base 10或20051 base 8)区分大小写

  • \ u0085将字符与索引为85 base 16(133 base 10或205 base 8)区分大小写

第一种替代方案\ r \ n

  • \ r匹配回车符(ASCII 13)
  • \ n匹配换行符(ASCII 10)

第二种选择[\ n \ r \ u2028 \ u2029 \ u0085]

  • 匹配[\ n \ r \ u2028 \ u2029 \ u0085]下面列表中存在的单个字符
  • \ n匹配换行符(ASCII 10)
  • \ r匹配回车符(ASCII 13)
  • \ u2028按字面意义(区分大小写)匹配具有索引202816(823210或200508)的字符LINE SEPARATOR
  • \ u2029按字面意义(区分大小写)将匹配与索引202916(823310或200518)的字符匹配
  • \ u0085从字面上匹配具有索引8516(13310或2058)的字符(区分大小写)NEXT LINE