自己写了个小程序,遇到些问题关于字符处理的,求帮忙

htcyrylcmj 2015-07-31 08:35:33

// 孙燕姿 - 绿光 - 酷狗音乐
// 燕姿 - 绿光 - 酷狗音乐 孙
// 姿 - 绿光 - 酷狗音乐 孙燕
// - 绿光 - 酷狗音乐 孙燕姿
// - 绿光 - 酷狗音乐 孙燕姿
// 绿光 - 酷狗音乐 孙燕姿 -
// 绿光 - 酷狗音乐 孙燕姿 -
// 光 - 酷狗音乐 孙燕姿 - 绿
// - 酷狗音乐 孙燕姿 - 绿光
// - 酷狗音乐 孙燕姿 - 绿光
// 酷狗音乐 孙燕姿 - 绿光 -
// 酷狗音乐 孙燕姿 - 绿光 -
// 狗音乐 孙燕姿 - 绿光 - 酷
// 音乐 孙燕姿 - 绿光 - 酷狗
// 乐 孙燕姿 - 绿光 - 酷狗音
// 孙燕姿 - 绿光 - 酷狗音乐
// 孙燕姿 - 绿光 - 酷狗音乐

线程执行获取酷狗的歌曲
每次获取的字符如上规律
我想要得到歌名,就绿光2个字
请问怎么处理比较简便
...全文
137 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
htcyrylcmj 2015-07-31
  • 打赏
  • 举报
回复
引用 6 楼 qq_25409579 的回复:
正则表达式去匹配
求给个匹配规则
fudapeng7 2015-07-31
  • 打赏
  • 举报
回复
正则表达式去匹配
htcyrylcmj 2015-07-31
  • 打赏
  • 举报
回复
引用 4 楼 qq_25409579 的回复:
[quote=引用 3 楼 htcyrylcmj 的回复:] [quote=引用 2 楼 qq_25409579 的回复:] 酷狗音乐和孙燕姿中间的空格是关键~ 若两个“-”中间有三个空格,则按“-”分成数组,第三个元素拼接第一个元素然后去空格
关键是有的歌曲歌名中间还有"-" 比如: 孙燕姿 - 绿光 - live版 - 酷狗音乐 光 - live版 - 酷狗音乐 孙燕姿 - 绿 这样怎么破 [/quote] 最后一个元素拼接第一个元素不就是咯~~~[/quote] 这么多种情况要怎么判断呢 肉眼直接看当然都知道这么做啊..
fudapeng7 2015-07-31
  • 打赏
  • 举报
回复
引用 3 楼 htcyrylcmj 的回复:
[quote=引用 2 楼 qq_25409579 的回复:] 酷狗音乐和孙燕姿中间的空格是关键~ 若两个“-”中间有三个空格,则按“-”分成数组,第三个元素拼接第一个元素然后去空格
关键是有的歌曲歌名中间还有"-" 比如: 孙燕姿 - 绿光 - live版 - 酷狗音乐 光 - live版 - 酷狗音乐 孙燕姿 - 绿 这样怎么破 [/quote] 最后一个元素拼接第一个元素不就是咯~~~
htcyrylcmj 2015-07-31
  • 打赏
  • 举报
回复
引用 2 楼 qq_25409579 的回复:
酷狗音乐和孙燕姿中间的空格是关键~ 若两个“-”中间有三个空格,则按“-”分成数组,第三个元素拼接第一个元素然后去空格
关键是有的歌曲歌名中间还有"-" 比如: 孙燕姿 - 绿光 - live版 - 酷狗音乐 光 - live版 - 酷狗音乐 孙燕姿 - 绿 这样怎么破
fudapeng7 2015-07-31
  • 打赏
  • 举报
回复
酷狗音乐和孙燕姿中间的空格是关键~ 若两个“-”中间有三个空格,则按“-”分成数组,第三个元素拼接第一个元素然后去空格
htcyrylcmj 2015-07-31
  • 打赏
  • 举报
回复
半个小时过去了 一个人都没有
htcyrylcmj 2015-07-31
  • 打赏
  • 举报
回复
引用 9 楼 wi496481 的回复:
[quote=引用 8 楼 htcyrylcmj 的回复:] [quote=引用 6 楼 qq_25409579 的回复:] 正则表达式去匹配
package com.gloomyfish.alpha;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String songName = "孙燕姿 - 绿光 - love - 我去 - 酷狗音乐 ";
		String[] aStrings = songName.split("");
		String[] song = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""};
		System.out.println(songName.length()+"-"+aStrings.length);
		
		for(int i=0; i<aStrings.length; i++){
			for(int j=0; j<aStrings.length; j++){
				int t = i+j;
				if(t >= aStrings.length) t-=aStrings.length;
				song[i] += aStrings[t];
			}
			System.out.println(song[i]);
		}
		
		String pstr = "-酷狗音乐([^\"]+)-";
		String a = "";
	    Pattern p = null;  
	    Matcher m = null;  
	    String[] s;
		
		for(int i=0; i<song.length; i++){
			a = song[i].replaceAll(" ", "").trim();
			pstr = "-酷狗音乐([^\"?!-]+)-";
			p = Pattern.compile(pstr);
			m = p.matcher(a);
			System.out.println(a);
			if(m.find()){
				s = a.split(m.group());
				if(s.length==1) a = s[0];
				else if(s.length ==2) a = s[1]+s[0];
				System.out.println("***********1******************"+a);
			}else{
				pstr = "([^\"]+)-酷狗音乐";
				p = Pattern.compile(pstr);
				m = p.matcher(a);
				if(m.find()){
					if(!m.group().contains("-") == false){
						a = m.group().substring(0, m.group().length()-5);
						pstr = "-([^\"]+)";
						p = Pattern.compile(pstr);
						m = p.matcher(a);
						if(m.find()){
							a = m.group().substring(1);
						}
					}
					System.out.println("***********2******************"+a);
				}else{
					pstr = "-([^\"]+)-";
					p = Pattern.compile(pstr);
					m = p.matcher(a);
					if(m.find()){
						a = m.group().substring(1, m.group().length()-1);
					}
					System.out.println("***********3******************"+a);
				}
			}
		}
		
	}

}
解决了结贴散分[/quote] 你也是狠,居然都打出来了[/quote] 怕有撒不匹配的 最后还是发现,如果歌手那里打个-...就截取了-以后的- - 算了就这样吧 没人奇葩到歌手都打符号
迷林 2015-07-31
  • 打赏
  • 举报
回复
引用 8 楼 htcyrylcmj 的回复:
[quote=引用 6 楼 qq_25409579 的回复:] 正则表达式去匹配
package com.gloomyfish.alpha;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String songName = "孙燕姿 - 绿光 - love - 我去 - 酷狗音乐 ";
		String[] aStrings = songName.split("");
		String[] song = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""};
		System.out.println(songName.length()+"-"+aStrings.length);
		
		for(int i=0; i<aStrings.length; i++){
			for(int j=0; j<aStrings.length; j++){
				int t = i+j;
				if(t >= aStrings.length) t-=aStrings.length;
				song[i] += aStrings[t];
			}
			System.out.println(song[i]);
		}
		
		String pstr = "-酷狗音乐([^\"]+)-";
		String a = "";
	    Pattern p = null;  
	    Matcher m = null;  
	    String[] s;
		
		for(int i=0; i<song.length; i++){
			a = song[i].replaceAll(" ", "").trim();
			pstr = "-酷狗音乐([^\"?!-]+)-";
			p = Pattern.compile(pstr);
			m = p.matcher(a);
			System.out.println(a);
			if(m.find()){
				s = a.split(m.group());
				if(s.length==1) a = s[0];
				else if(s.length ==2) a = s[1]+s[0];
				System.out.println("***********1******************"+a);
			}else{
				pstr = "([^\"]+)-酷狗音乐";
				p = Pattern.compile(pstr);
				m = p.matcher(a);
				if(m.find()){
					if(!m.group().contains("-") == false){
						a = m.group().substring(0, m.group().length()-5);
						pstr = "-([^\"]+)";
						p = Pattern.compile(pstr);
						m = p.matcher(a);
						if(m.find()){
							a = m.group().substring(1);
						}
					}
					System.out.println("***********2******************"+a);
				}else{
					pstr = "-([^\"]+)-";
					p = Pattern.compile(pstr);
					m = p.matcher(a);
					if(m.find()){
						a = m.group().substring(1, m.group().length()-1);
					}
					System.out.println("***********3******************"+a);
				}
			}
		}
		
	}

}
解决了结贴散分[/quote] 你也是狠,居然都打出来了
htcyrylcmj 2015-07-31
  • 打赏
  • 举报
回复
引用 6 楼 qq_25409579 的回复:
正则表达式去匹配
package com.gloomyfish.alpha;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String songName = "孙燕姿 - 绿光 - love - 我去 - 酷狗音乐 ";
		String[] aStrings = songName.split("");
		String[] song = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""};
		System.out.println(songName.length()+"-"+aStrings.length);
		
		for(int i=0; i<aStrings.length; i++){
			for(int j=0; j<aStrings.length; j++){
				int t = i+j;
				if(t >= aStrings.length) t-=aStrings.length;
				song[i] += aStrings[t];
			}
			System.out.println(song[i]);
		}
		
		String pstr = "-酷狗音乐([^\"]+)-";
		String a = "";
	    Pattern p = null;  
	    Matcher m = null;  
	    String[] s;
		
		for(int i=0; i<song.length; i++){
			a = song[i].replaceAll(" ", "").trim();
			pstr = "-酷狗音乐([^\"?!-]+)-";
			p = Pattern.compile(pstr);
			m = p.matcher(a);
			System.out.println(a);
			if(m.find()){
				s = a.split(m.group());
				if(s.length==1) a = s[0];
				else if(s.length ==2) a = s[1]+s[0];
				System.out.println("***********1******************"+a);
			}else{
				pstr = "([^\"]+)-酷狗音乐";
				p = Pattern.compile(pstr);
				m = p.matcher(a);
				if(m.find()){
					if(!m.group().contains("-") == false){
						a = m.group().substring(0, m.group().length()-5);
						pstr = "-([^\"]+)";
						p = Pattern.compile(pstr);
						m = p.matcher(a);
						if(m.find()){
							a = m.group().substring(1);
						}
					}
					System.out.println("***********2******************"+a);
				}else{
					pstr = "-([^\"]+)-";
					p = Pattern.compile(pstr);
					m = p.matcher(a);
					if(m.find()){
						a = m.group().substring(1, m.group().length()-1);
					}
					System.out.println("***********3******************"+a);
				}
			}
		}
		
	}

}
解决了结贴散分

50,636

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧