मैं एक अल्पविराम बंटवारे का एक उचित रूप में सरल समस्या टोकन, जिससे उत्पादन मामलों में खाली टोकन शामिल होना चाहिए में String
अलग है युक्त Tokenising जहां:एक स्ट्रिंग खाली टोकन
String
में पहले वर्ण एक अल्पविराम है ।String
में अंतिम वर्ण एक अल्पविराम है।- दो लगातार कॉमा होते हैं।
, String
के लिए: {"", "abd", "def", "", "ghi", ""}
: ",abd,def,,ghi,"
उत्पादन उपज चाहिए।
मैंने String.split
, Scanner
और StringTokenizer
का उपयोग करने की कोशिश की है, लेकिन प्रत्येक एक अलग अवांछित आउटपुट (नीचे उदाहरण) देता है। क्या कोई इस बारे में सुरुचिपूर्ण समाधान सुझा सकता है, अधिमानतः जेडीके कक्षाओं का उपयोग कर सकता है? जाहिर है, मैं कुछ खुद को कोड कर सकता हूं लेकिन मुझे लगता है कि मुझे तीन दृष्टिकोणों में से एक पर कुछ याद आ रहा है। ध्यान दें कि डिलीमीटर एक निश्चित String
है हालांकि आवश्यक रूप से एक अल्पविराम, न ही एक वर्ण है।
उदाहरण कोड
import java.util.*;
public class Main12 {
public static void main(String[] args) {
String s = ",abd,def,,ghi,";
String[] tokens = s.split(",");
System.err.println("--- String.split Output ---");
System.err.println(String.format("%s -> %s", s, Arrays.asList(tokens)));
for (int i=0; i<tokens.length; ++i) {
System.err.println(String.format("tokens[%d] = %s", i, tokens[i]));
}
System.err.println("--- Scanner Output ---");
Scanner sc = new Scanner(s);
sc.useDelimiter(",");
while (sc.hasNext()) {
System.err.println(sc.next());
}
System.err.println("--- StringTokenizer Output ---");
StringTokenizer tok = new StringTokenizer(s, ",");
while (tok.hasMoreTokens()) {
System.err.println(tok.nextToken());
}
}
}
आउटपुट
$ java Main12
--- String.split Output ---
,abd,def,,ghi, -> [, abd, def, , ghi]
tokens[0] =
tokens[1] = abd
tokens[2] = def
tokens[3] =
tokens[4] = ghi
--- Scanner Output ---
abd
def
ghi
--- StringTokenizer Output ---
abd
def
ghi