java string delimiter, keeping delimiter in token

前端 未结 3 460
没有蜡笔的小新
没有蜡笔的小新 2021-01-26 00:06

im trying to split a string but keep the delimiter at the beginning of the next token (if thats possible)

Example: I\'m trying to split the string F120LF120L

相关标签:
3条回答
  • 2021-01-26 00:33

    How about doing it brute force?

    String del = "L";
    String str = "F120LLF120LLLLF12L";
    int i = 0;
    
    while (true) {
        i = str.indexOf(del, i);
        if (i == -1) break;
        String a = str.substring(0, i);
        String b = str.substring(i + del.length());
        str = a + " " + del;
        str += b.startsWith(del) || b.length() == 0 ? b : " " + b;
        i = a.length() + del.length() + 1;
    }
    
    System.out.println(str);
    // Will print: F120 L L F120 L L L L F12 L
    
    0 讨论(0)
  • 2021-01-26 00:44

    Use split(), for all practical purposes StringTokenizer is deprecated (it's still there only for backwards compatibility). This will work:

    String delimiter = "L";
    String str = "F120LF120L";
    String[] splitted = str.split(delimiter);
    
    for (String s : splitted) {
        System.out.println(s);
        System.out.println(delimiter);
    }
    
    > F120
    > L
    > F120
    > L
    
    0 讨论(0)
  • 2021-01-26 00:57

    From the docs, you can use StringTokenizer st = new StringTokenizer(str, "L", true); The last parameter is a boolean that specifies that delimiters have to be returned too.

    0 讨论(0)
提交回复
热议问题