令牌清理器 Java 方法
Token Cleaner Java Method
我正在做的 WordCount 项目需要一个 TokenCleaner 方法。标记是一系列被空格包围的字符,通常是一个单词,需要 "cleaned" 任何标点符号和大写字母。我有一个模板,但我不确定如何做或启动它。
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();
}
但这会从所有地方删除数字和特殊字符,而不仅仅是令牌的开头和结尾。
如果有帮助请告诉我。
I am not sure how to do or start it.
您可以通过模式匹配来实现。首先阅读 Pattern
(实现 Java 正则表达式)和 String.replaceAll
方法的 javadoc。
或者,您可以创建一个新的(空的)StringBuilder
,然后遍历原始字符串中的字符,将要保留的字符复制到 StringBuilder
中。完成后,从 StringBuilder
.
创建一个 String
我不会为您提供相关 javadoc 的链接。找到它们、搜索它们以及阅读/理解它们是您需要学习的技能。
我建议您解析每个字符,如果它等于您要删除的任何字符,您可以将其删除,如果不是小写,例如:
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;
}
我正在做的 WordCount 项目需要一个 TokenCleaner 方法。标记是一系列被空格包围的字符,通常是一个单词,需要 "cleaned" 任何标点符号和大写字母。我有一个模板,但我不确定如何做或启动它。
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();
}
但这会从所有地方删除数字和特殊字符,而不仅仅是令牌的开头和结尾。
如果有帮助请告诉我。
I am not sure how to do or start it.
您可以通过模式匹配来实现。首先阅读 Pattern
(实现 Java 正则表达式)和 String.replaceAll
方法的 javadoc。
或者,您可以创建一个新的(空的)StringBuilder
,然后遍历原始字符串中的字符,将要保留的字符复制到 StringBuilder
中。完成后,从 StringBuilder
.
String
我不会为您提供相关 javadoc 的链接。找到它们、搜索它们以及阅读/理解它们是您需要学习的技能。
我建议您解析每个字符,如果它等于您要删除的任何字符,您可以将其删除,如果不是小写,例如:
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;
}