为了账号安全,请及时绑定邮箱和手机立即绑定

令牌 - 字符串 Java

令牌 - 字符串 Java

SMILET 2021-12-30 20:31:00
我有以下任务我成功了,但是代码效率很低,如果有人能告诉我一种更有效的方法,也许是子字符串,我将不胜感激。那作业:/** * 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;}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;}我不能使用 import 或 regex,谢谢!
查看完整描述

2 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

使用 String.split 方法


String[] tokens = str.split(separator)



for(String token:tokens){

//your code goes here

}

文档在这里


https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)


查看完整回答
反对 回复 2021-12-30
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

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


public static String[] tokenize (String str, char separator) {

    String[] tokens = str.split(separator);

    return tokens;

}

或者,如果您想使用自己的拆分来执行此操作,则可以这样做(对代码的改进)。


public static String[] tokenize (String str, char separator) {

    String sep = ""+separator;

    int max_size = str.length() - str.replace(sep, "").length() +1 ; // Calculate max array size

    String[] temp = new String[max_size];

    int start = 0, index = 0, exact_size = 0;

    int pos = str.indexOf(separator);

    while (pos>=start) {

        if (pos>start){

            temp[index++] = str.substring(start,pos).trim();

            exact_size++;

        }

        start = pos + 1;

        pos = str.indexOf(separator,start); 

    }

    String[] tokens = new String[exact_size];

    System.arraycopy(temp, 0, tokens, 0, exact_size); 

    return tokens;

}

希望你觉得它有用。


查看完整回答
反对 回复 2021-12-30
  • 2 回答
  • 0 关注
  • 185 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号