Here you can find the source of split(String str)
public static List<String> split(String str)
//package com.java2s; /** //from www . j ava 2 s . c o m * The MIT License (MIT) * * Copyright (c) 2014-2016 Emerald Icemoon (emerald.icemoon@gmail.com) * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and * associated documentation files (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, publish, distribute, * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial * portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ import java.util.ArrayList; import java.util.List; public class Main { public static List<String> split(String str) { List<String> l = new ArrayList<String>(); boolean esc = false; boolean quoted = false; StringBuilder w = new StringBuilder(); for (char c : str.toCharArray()) { if (c == '\'' && !esc) { quoted = !quoted; } else if (c == '\\' && !esc) { esc = true; } else if (c == ' ' && !quoted && !esc) { l.add(w.toString()); w.setLength(0); } else { w.append(c); } } if (w.length() > 0) { l.add(w.toString()); } return l; } }