Text tokenizer - extract words and positions from text
You shouldn't shorten class names. So WordPos should become WordPosition.  



Right now you are creating WordPos items which you add to a List&lt;WordPos&gt; which is lost after returning from the method.  



Instead of using substring() you could use a StringBuilder object, where you append if the current char is contained in DELIMITERS.  

You would need to take care (which you don't do right now) about the case that the text ends without any of your delimiting chars.  

public List&lt;String&gt; extractWords(String text) {
    List&lt;String&gt; words = new ArrayList&lt;&gt;();
    StringBuilder sb = new StringBuilder(text.length());

    for (int i = 0; i &lt; text.length(); i++) {
        char current = text.charAt(i);

        if (DELIMITERS.contains(current)) {
            if (sb.length() &gt; 0) {
                words.add(sb.toString());
                sb.setLength(0);
            }
        } else {
            sb.append(current);
        }
    }
    if (sb.length() &gt; 0) {
        words.add(sb.toString());
    }
    return words;
}