简体   繁体   中英

Store parts of string in a string array

I have a string tajmahal.txt sarjan.pdf noorjahan.exe . I want to store this string in a string array such that ar[0] = tajmahal.txt , ar[1] = sarjan.pdf and ar[2] = noorjahan.exe . How can I do it without using any build functions in java (because I am using j2me which does not support many j2se functions). Any help would be great. Thanks in advance.

Since String.split is not available. You can see the implementation of split from this answer

 public static String[] Split(String splitStr, String delimiter) {
     StringBuffer token = new StringBuffer();
     Vector tokens = new Vector();
     // split
     char[] chars = splitStr.toCharArray();
     for (int i=0; i < chars.length; i++) {
         if (delimiter.indexOf(chars[i]) != -1) {
             // we bumbed into a delimiter
             if (token.length() > 0) {
                 tokens.addElement(token.toString());
                 token.setLength(0);
             }
         } else {
             token.append(chars[i]);
         }
     }
     // don't forget the "tail"...
     if (token.length() > 0) {
         tokens.addElement(token.toString());
     }
     // convert the vector into an array
     String[] splitArray = new String[tokens.size()];
     for (int i=0; i < splitArray.length; i++) {
         splitArray[i] = (String)tokens.elementAt(i);
     }
     return splitArray;
 }
    String str="tajmahal.txt sarjan.pdf noorjahan.exe";
    StringTokenizer st=new StringTokenizer(str," ");
    String[] arr=new String[st.countTokens()];
    int i=0;
    while (st.hasMoreElements()){
           arr[i]=st.nextToken();
           i++;
    }

It depends on which Java ME configuration/profile set you use.

When it comes to CLDC/MIDP, where there is no collections, StringTokenizer, split(), and so on.

  1. count those space(' ')s first.
  2. prepare a String[count + 1].
  3. split each token while buffering characters with a StringBuffer.
static String[] split(final String string) {

    // count spaces
    int spaces = 0;
    for (int i = 0; i < string.length(); i++) {
        if (string.charAt(i) == 0x20) {
            spaces++;
        }
    }

    // prepare the array and buffer
    final String[] split = new String[spaces + 1];
    final StringBuffer buffer = new StringBuffer();

    int index = 0;
    for (int i = 0; i < string.length(); i++) {
        if (string.charAt(i) == 0x20) {
            split[index++] = buffer.toString();
            buffer.delete(0, buffer.length());
            continue;
        }
        buffer.append(string.charAt(i));
    }

    return split;
}

There are implementations of StringTokenizer in J2me. check out this example to help you out with the task.

StringTokenizer token;
token = new StringTokenizer(str);
int i=0;
while(token.hasMoreElements()){
ar[i++]= tok.nextToken();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM