將一句話按照語義2 n元切詞,工具類

2021-06-20 23:12:49 字數 2006 閱讀 8280

工參考
/**

* @description:2-n元分詞方法,具體規則如下:

去除字串頭尾的空格和標點符號

把連續相同字元(相鄰單字)合併為唯一字元(不合併純數字字串和英文),

根據字串中間的標點符號進行分斷處理,形成多個片段(只保留長度大於1的分斷字串,也就是說最小單位是二元)

過濾掉重複的詞彙

*/public class ndivideutil

}else

}} return resultlist.toarray(new string[0]); }

/*** 根據標點符號,將一句話分成多個語義

*/private static void splitbypunctuation(string str,listlist)

flag=true;

break;

}} if (!flag&&str!=null&&str.length()!=0) }

/*** 根據英文單詞和數字,進一步分成多個語義

*/public static string splitbywordanddigit(string str)

int len=str.length();

boolean isenglishstr=false;

boolean isdigitstr=false;

boolean ischinesestr=false;

stringbuilder sb=new stringbuilder();//英文單詞

stringbuilder sbdigit=new stringbuilder();//數字

stringbuilder sbchinese=new stringbuilder();//中文

for (int i = 0; i <=len-1; i++)

if (isdigitstr)

isdigitstr=false;

if (ischinesestr)

ischinesestr=false;

}else if (isdigit(ch))

if (isenglishstr)

isenglishstr=false;

if (ischinesestr)

ischinesestr=false;

}else if (ischinese(ch))

if (isenglishstr)

isenglishstr=false;

if (isdigitstr)

isdigitstr=false;

}} return list.toarray(new string[0]); }

/*** 去除重複的中文

*/private static string castduplicatechinese(string string)

tmpchar=ch;

} return sb.tostring(); }

//判斷是否為英文本元

private static boolean isenglish(char ch) }

//判斷是否為漢字

private static boolean ischinese(char ch) }

//判斷是否為數字

private static boolean isdigit(char ch) }

//判斷是否為標點符號

private static boolean ispunctuation(char ch) }

public static string ndivide(string str)

int len=str.length();

for (int i = 2; i <=len; i++)

} return list.toarray(new string[0]);

}}

《每日一題》將一句話的單詞進行倒置

將一句話的單詞進行倒置,標點不倒置。比如 i like beijing.經過函式後變為 beijing.like i 每個測試輸入包含1個測試用例 i like beijing.輸入用例 長度不超過100 輸出描述 依次輸出倒置之後的字串,以空格分割 i like beijing.beijing.l...

一句話,全國方言N種說法,挺有意思。

一句話,全國方言n種說法,挺有意思。北京話 今兒爺就站這兒了,你丫動我一試試。別看你丫個兒不小,逼急了老子拿板磚hai 一聲 你丫挺的!天津話 近兒我揍贊借害兒了,你動我一四四,甭看泥葛大,必急了我自接那鑽頭拍泥腦袋!山東話 今日老子窩就站遮泥,泥趕招呼窩時時,甭看泥掌地鎬,惹毛撩窩拿塊半頭專橫你頭...

將一句話裡的單詞進行倒置,標點符號不倒換。

比如 一句話 i love you.轉換後為 you.love i include include includeusing namespace std int main while p 0 pt 在pt中增加乙個空格。flag p中連續空格數 1 p 0 將該空格置為 0 以便作為下一次將字母複製...