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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

现有一个行单词(单词 翻译 音标连在一块了):access [ˈækses] v.访问  accessed adj.访问的 2  accessible  [  ə  kˈses  əbl  ] adj.可访问的(此后省略很多)
请大神帮忙写个程序将它去除音标变成以下输出模式
access v.访问
accessed adj.访问的
accessible adj.可访问的

7 个回复

倒序浏览
每个单词前有没有数字序号?
回复 使用道具 举报
转为StringBuffer,获得“[”和“]”的索引a,b,然后delete(a,b),记得toString()转回String
回复 使用道具 举报
“[”和“]”的索引a,b,然后在写
回复 使用道具 举报
水月灬清影 发表于 2016-8-20 13:13
每个单词前有没有数字序号?

没有数字序号
回复 使用道具 举报
你们的做法音标是删了,我想请教,如何控制换行?
回复 使用道具 举报
你要求的基本实现,但是由于控制换行的地方我没处理好,所以没用IO流写。这段程序最大的问题就是控制换行的字母那里,你需要手动把所有a开头的字母剪出来,贴到程序里,处理完之后,再把b开头的剪出来,贴进去……
正则应该可以实现,但是换行循环那里我没想好怎么处理,你可以顺着这个思路往下写,再加上IO流,就行了。
[Java] 纯文本查看 复制代码
import java.util.Scanner;


public class LetterAndLn {
	public static void main(String[] args) {
		//测试字符串
		String line="access [ˈækses] v.访问  accessed adj.访问的   accessible  [  ə  kˈses  əbl  ] adj.可访问的" ;
	
		StringBuilder sb = new StringBuilder(line);
		
		//删音标
		while(true){
			int start=sb.indexOf("[");
			int end=sb.indexOf("]");
			if(start==-1){
				break;
			}else{
				sb.delete(start, end+1);
			}
			
		}
		
		//输入单词首字母
		System.out.println("请输入所处理单词首字母");
		Scanner sc=new Scanner(System.in);
		String letter=sc.nextLine();

		//换行
		StringBuilder sb2=new StringBuilder();
		while(true){
			int start=sb.indexOf(".");
			int end = sb.indexOf(letter, start);
			if(end==-1){
				sb2.append(sb.substring(0));
				break;
			}else{
				sb.insert(end, "\n");
				sb2.append(sb.substring(0, end+1));
				sb.delete(0, end+1);
			}
			
		}


		
		System.out.println(sb2);

	}
}
回复 使用道具 举报
加油!加油!加油!加油!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马