A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

代码:
  1. private void lrcPrint(String lrc ){
  2.       String[] lrcLines = lrc.split( "[" );
  3.       //查看当前字符串数组的内容
  4.       for(int i = 1; i < lrcLines.length;i++){
  5.              System.out.println(lrcLines[i]);
  6.       }
  7. }
复制代码
lrc是源String,内容是:
[ti:Bressanone  布列瑟农]
[ar:马修·连恩]
[al:《狼》]
[by:炫网资讯 Liuxuan.com]
[00:00.00]BRESSANONE  布列瑟农
[00:05.00]歌手:马修·连恩
[00:15.00]译文:我站在布列瑟侬的星空下
[00:19.00]而星星 也在天的另一边照着布列瑟农

报异常:Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index  0

麻烦大家了,帮看看是什么问题。

2 个回复

倒序浏览
本帖最后由 nailsoul 于 2012-4-27 14:09 编辑

PatternSyntaxException正则表达式语法异常
[在正则表达式中时区间的一部分 直接写成"["会抛异常  需要转义"\\[" .在正则表达式中可以代表任意字符在正则表达式中要表示.就得写成"[.]"
  1. public class Regx {
  2. public static void main(String[] args) {
  3. String lrc="[ti:Bressanone 布列瑟农][ar:马修·连恩][al:《狼》]";
  4. lrc+="[by:炫网资讯 Liuxuan.com][00:00.00]BRESSANONE 布列瑟农";
  5. lrcPrint(lrc);
  6. }
  7. private static void lrcPrint(String lrc ){
  8. String[] lrcLines = lrc.split( "\\[" );
  9. //查看当前字符串数组的内容
  10. for(int i = 1; i < lrcLines.length;i++){
  11. System.out.println(lrcLines[i]);
  12. }
  13. }
  14. }
复制代码
以上结果每行结尾都有个]看起来不爽下面的代码 结果只有文字没有中括号
  1. package abc;

  2. public class Regx {
  3. public static void main(String[] args) {
  4. String lrc="[ti:Bressanone 布列瑟农][ar:马修·连恩][al:《狼》]";
  5. lrc+="[by:炫网资讯 Liuxuan.com][00:00.00]BRESSANONE 布列瑟农";
  6. lrcPrint(lrc);
  7. }
  8. private static void lrcPrint(String lrc ){
  9. String[] lrcLines = lrc.split( "[\\[\\]]" );
  10. //查看当前字符串数组的内容
  11. for(int i = 1; i < lrcLines.length;i++){
  12. System.out.println(lrcLines[i]);
  13. }
  14. }
  15. }
复制代码
回复 使用道具 举报
split方法会把你传入的字串参数当做正则表达式解析,而“[”是描述正则表达式规则的功能字符,如果要以”[“分割字串要这样用:
String[] lrcLines = lrc.split( "\\[" );
你用这句替换掉你自己的代码就可以运行了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马