令牌清除程序Java方法

问题描述 投票:-1回答:3

我需要为我正在执行的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
    }

有人可以帮忙吗?

谢谢

java word-count
3个回答
0
投票

我不确定这是否是上述要求,但是您可以使用类似的方法:

private static String cleanToken(String token)
    {
        return token.replaceAll("\\P{L}", "").toLowerCase();
    }

但是这会从所有位置删除数字和特殊字符,而不仅仅是令牌的开头和结尾。

让我知道是否有帮助。


0
投票

我不确定如何执行或启动它。

您可以通过模式匹配来实现。首先阅读Pattern(实现Java正则表达式)和String.replaceAll方法的javadocs。

或者,您可以创建一个新的(空)StringBuilder,然后循环遍历原始字符串中的字符,将要保留的字符复制到StringBuilder中。完成后,从String创建一个StringBuilder

我不会给您链接到相关的javadocs。查找,搜索和阅读/理解它们是您需要学习的技能。


0
投票

我可以建议您解析每个角色,如果它等于要删除的任何内容,则可以将其删除,例如,如果不是小写,可以将其删除:

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.