赞
踩
使用Java,输入中文语句,分解为词语并输出。
将词库读入list数组,读入语句,分割语句,和字典的词进行比对,使用逆向检索的方法。(使用逆向的方法是因为逆向更符合中文语句的组词方式)
定义字符串ss,将字符串使用split方法来进行分割,split的使用方法:如果每个,分割一次,则表达式为split(",")
,如果语句之件为空格,则表达式为split(" ")
public static ArrayList<String> list = new ArrayList<String>();
try {
File file = new File("F:\\dictionary.txt");
BufferedReader input = new BufferedReader(new FileReader(file));
String ss = new String();
while ((ss = input.readLine()) != null) {
String[] s = ss.split(" ");
//将字符串中的所有单词都添加到list里面
for(String t:s){
list.add(t);
}
}
input.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println("read fail");
}
class Split {
private String input=null;
public Split (String input) {
this.input = input;
}
public void start(){
String temp=null;
for(int i=0;i<this.input.length();i++){
temp=this.input.substring(i);//每次从字符串的首位截后面的内容,并保存在temp
if(this.isInDictionary(temp)){
System.out.println(temp);
this.input=this.input.replace(temp,"");
i=-1;//这块必须把i置为0
}
}
//如果第一次循环没有找到,则把最后的一个字截取,开始第二次循环
if(null != this.input && !"".equals(this.input)) {
this.input = this.input.substring(0,this.input.length()-1);
this.start();
}
}
public boolean isInDictionary(String temp){
if(InsertString.list.contains(temp)){
return true;
}
return false;
}
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Scanner;
public class InsertString {
public static ArrayList<String> list = new ArrayList<String>();
public static void main(String[] args) {
try {
File file = new File("F:\\dictionary.txt");
BufferedReader input = new BufferedReader(new FileReader(file));
String ss = new String();
while ((ss = input.readLine()) != null) {
//读入的每行分成数组
String[] s = ss.split(" ");
//将数组中的所有单词都添加到list里面
for(String t:s){
list.add(t);
}
}
input.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println("read fail");
}
Scanner in= new Scanner(System.in);
System.out.println("请输入语句");
String input = in.next();// 要匹配的字符串
new Split(input).start();
}
}
class Split {
private String input=null;
public Split (String input) {
this.input = input;
}
public void start(){
String temp=null;
for(int i=0;i<this.input.length();i++){
temp=this.input.substring(i);//每次从字符串的首位截后面的内容,并保存在temp
if(this.isInDictionary(temp)){
System.out.println(temp);
this.input=this.input.replace(temp,"");
i=-1;
}
}
//如果第一次循环没有找到,则把最后的一个字截取,开始第二次循环
if(null != this.input && !"".equals(this.input)) {
this.input = this.input.substring(0,this.input.length()-1);
this.start();
}
}
//判断当前词是否在字典中
public boolean isInDictionary(String temp){
if(InsertString.list.contains(temp)){
return true;
}
return false;
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。