黑马程序员技术交流社区
标题:
想写一个lrc歌词读取程序,切割字符串的时候出错了
[打印本页]
作者:
丁佼
时间:
2012-4-27 12:55
标题:
想写一个lrc歌词读取程序,切割字符串的时候出错了
代码:
private void lrcPrint(String lrc ){
String[] lrcLines = lrc.split( "[" );
//查看当前字符串数组的内容
for(int i = 1; i < lrcLines.length;i++){
System.out.println(lrcLines[i]);
}
}
复制代码
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
麻烦大家了,帮看看是什么问题。
作者:
黑马罗坚
时间:
2012-4-27 13:26
本帖最后由 nailsoul 于 2012-4-27 14:09 编辑
PatternSyntaxException正则表达式语法异常
[在正则表达式中时区间的一部分 直接写成"["会抛异常 需要转义"\\[" .在正则表达式中可以代表任意字符在正则表达式中要表示.就得写成"[.]"
public class Regx {
public static void main(String[] args) {
String lrc="[ti:Bressanone 布列瑟农][ar:马修·连恩][al:《狼》]";
lrc+="[by:炫网资讯 Liuxuan.com][00:00.00]BRESSANONE 布列瑟农";
lrcPrint(lrc);
}
private static void lrcPrint(String lrc ){
String[] lrcLines = lrc.split( "\\[" );
//查看当前字符串数组的内容
for(int i = 1; i < lrcLines.length;i++){
System.out.println(lrcLines[i]);
}
}
}
复制代码
以上结果每行结尾都有个]看起来不爽下面的代码 结果只有文字没有中括号
package abc;
public class Regx {
public static void main(String[] args) {
String lrc="[ti:Bressanone 布列瑟农][ar:马修·连恩][al:《狼》]";
lrc+="[by:炫网资讯 Liuxuan.com][00:00.00]BRESSANONE 布列瑟农";
lrcPrint(lrc);
}
private static void lrcPrint(String lrc ){
String[] lrcLines = lrc.split( "[\\[\\]]" );
//查看当前字符串数组的内容
for(int i = 1; i < lrcLines.length;i++){
System.out.println(lrcLines[i]);
}
}
}
复制代码
作者:
罗旭维
时间:
2012-4-27 13:47
split方法会把你传入的字串参数当做正则表达式解析,而“[”是描述正则表达式规则的功能字符,如果要以”[“分割字串要这样用:
String[] lrcLines = lrc.split( "\\[" );
你用这句替换掉你自己的代码就可以运行了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2