我需要为我正在执行的WordCount项目提供TokenCleaner方法。令牌是由空格包围的一系列字符,通常是一个单词,需要“清除”所有标点和大写字母。我有一个模板,但是我不确定如何执行或启动它。
public class TokenCleaner
{
public static void main()
{
String[] tokens = {"That's","empty-handed?","42","...idk...","\"quote\""};
for(int i = 0; i < tokens.length; i++)
{
System.out.println("Original:\t"+tokens[i]);
System.out.println("Cleaned:\t"+cleanToken(tokens[i]));
}
}
private static String cleanToken(String token)
{
/** remove leading special characters and numbers **/
// while the token's length is greater than zero AND the first character isn't a letter
// remove the first character from the token
/** remove trailing special characters and numbers **/
// while the token's length is greater than zero AND the last character isn't a letter
// remove the last character from the token
// return a lowercase version of the token
/** Note: It is possible for the cleaned token to be an empty String if the given token
consisted of only non-letter characters */
return null; // placeholder return statement
}
有人可以帮忙吗?
谢谢
我不确定这是否是上述要求,但是您可以使用类似的方法:
private static String cleanToken(String token)
{
return token.replaceAll("\\P{L}", "").toLowerCase();
}
但是这会从所有位置删除数字和特殊字符,而不仅仅是令牌的开头和结尾。
让我知道是否有帮助。
我不确定如何执行或启动它。
您可以通过模式匹配来实现。首先阅读Pattern
(实现Java正则表达式)和String.replaceAll
方法的javadocs。
或者,您可以创建一个新的(空)StringBuilder
,然后循环遍历原始字符串中的字符,将要保留的字符复制到StringBuilder
中。完成后,从String
创建一个StringBuilder
。
我不会给您链接到相关的javadocs。查找,搜索和阅读/理解它们是您需要学习的技能。
我可以建议您解析每个角色,如果它等于要删除的任何内容,则可以将其删除,例如,如果不是小写,可以将其删除:
private static String cleanToken(String token) {
// arraylist of new token
ArrayList<String> newtoken = new ArrayList<String>();
// arraylist of elements you wanna delete
ArrayList<String> todelete = new ArrayList<String>();
todelete.add("@"); // you can add all element u wanna delete
// parsing your token
for(int i=0 ; i < token.lentgh() ; i++ ) {
if ( todelete.contains( token.charAt(i) ) ) {
// you can delete it in the way you want
}
else {
// lowercase it
newtoken.add( (token.charAt(i)).toString().toLowerCase() ) ;
}
}
// and now you can merge all elements of your newtoken list to one String
String NewToken = "";
for ( String t : newtoken ) {
NewToken = NewToken + t ;
}
return NewToken;
}