令牌-字符串Java

令牌-字符串Java,java,string,token,Java,String,Token,我成功地完成了以下任务,但是代码效率很低,如果有人能给我展示一种更有效的方法,我将不胜感激,也许是使用子字符串。任务: /** * Separates a given string into tokens, which are the "words" that are * separated by one or more occurrences of the given separator character. * Returns the tokens as an array of Str

我成功地完成了以下任务,但是代码效率很低,如果有人能给我展示一种更有效的方法,我将不胜感激,也许是使用子字符串。任务:

/**
 * Separates a given string into tokens, which are the "words" that are
 * separated by one or more occurrences of the given separator character.
 * Returns the tokens as an array of String values.
 */
public static String[] tokenize (String str, char separator) {
    // Removes all the occurrences of the separator at the beginning and end of str
    String source = trim(str, separator);
    String[] tokens = new String[charRunCount (source,separator)+1];
    String tmp = ""; // a string in order to take a word, then run over this string
    int j = 0;
    int i = 0;
    while (i < tokens.length) {
        if ( source.charAt (j) != separator ) {
            do {
                tmp += source.charAt (j);
                if ( j >= source.length () - 1 ) {
                    break;
                }
                else { // so that we math the source length
                    j++;
                }
            } while (source.charAt (j) != separator); 
        }
        if ( source.charAt (j) == separator ) {
            j++;
            while (source.charAt (j) == separator) {
                j++;
            }
        }
        tokens[i] = tmp;// taking the token into place
        tmp = ""; //resetting the token so we can begin anew

        i++;
    }
    return tokens;
}
/**
*将给定字符串分隔为标记,这些标记是
*由给定分隔符的一个或多个匹配项分隔。
*以字符串值数组的形式返回标记。
*/
公共静态字符串[]标记化(字符串str,字符分隔符){
//删除字符串开头和结尾处出现的所有分隔符
字符串源=修剪(str,分隔符);
String[]令牌=新字符串[charRunCount(源,分隔符)+1];
String tmp=“”;//一个字符串,以获取一个单词,然后在该字符串上运行
int j=0;
int i=0;
while(i=source.length()-1){
打破
}
else{//这样我们就可以计算出源的长度
j++;
}
}while(source.charAt(j)!=分隔符);
}
if(source.charAt(j)=分隔符){
j++;
while(source.charAt(j)=分隔符){
j++;
}
}
令牌[i]=tmp;//将令牌放置到位
tmp=”“;//重置令牌以便我们可以重新开始
i++;
}
归还代币;
}
cahrRunCount函数:

    public static int charRunCount(String str, char c){
    char last = 0;
    int counter = 0;
    for (int i = 0; i < str.length(); i++) {
        // whenever a run starts.
        if (last != c && str.charAt(i) == c) {
            counter++;
        }
        last = str.charAt(i);
    }
    return counter;
}
publicstaticintcharruncount(stringstr,charc){
char last=0;
int计数器=0;
对于(int i=0;i

我不能使用import或regex,谢谢

使用String.split方法

String[] tokens = str.split(separator)


for(String token:tokens){
//your code goes here
}
这里的医生


使用String.split方法

String[] tokens = str.split(separator)


for(String token:tokens){
//your code goes here
}
这里的医生


如果需要,可以使用String类的split方法(就像@Amidala Siva Kumar建议的那样),如下所示:

public static String[] tokenize (String str, char separator) {
    String[] tokens = str.split(separator);
    return tokens;
}
或者,如果您想使用自己的拆分来完成,您可以这样做(对代码的改进)


希望您觉得它有用。

如果您愿意,可以使用String类的split方法(就像@Amidala Siva Kumar建议的那样),如下所示:

public static String[] tokenize (String str, char separator) {
    String[] tokens = str.split(separator);
    return tokens;
}
或者,如果您想使用自己的拆分来完成,您可以这样做(对代码的改进)


希望您觉得它有用。

如果您的代码正常工作但需要改进,可能是发布它的更好地方。抱歉,我不知道这样的网站存在如果您的代码正常工作但需要改进,可能是发布它的更好地方。抱歉,我不知道这样的网站存在例如,您如何在for循环中使用它?因为分隔符是一个字符,所以您将如何在for循环中使用它?因为separator是一个charI,我不知道split函数,你怎么实现它?我不知道split函数,你怎么实现它?