温温酱
import java.util.ArrayList;import java.util.List;public class SplitUsingAnotherMethodBecauseBossLikesWastingEveryonesTime { public static void main(String[] args) { System.out.println(split("Why would anyone want to write their own String split function in Java?", ' ')); System.out.println(split("The|Split|Method|Is|Way|More|Flexible||", '|')); } private static List<String> split(String input, char delimiter) { List<String> result = new ArrayList<>(); int idx = 0; int next; do { next = input.indexOf(delimiter, idx); if (next > -1) { result.add(input.substring(idx, next)); idx = next + 1; } } while(next > -1); result.add(input.substring(idx)); return result; }}输出...[Why, would, anyone, want, to, write, their, own, String, split, function, in, Java?][The, Split, Method, Is, Way, More, Flexible, , ]
守着星空守着你
您可以只遍历char字符串中的所有 s,然后用于substring()选择不同的子字符串:public static List<String> split(String input, char delimiter) { List<String> output = new LinkedList<>(); int lastIndex = 0; boolean doubleQuote = false; boolean singleQuoteFound = false; for (int i = 0, current, last = 0, length = input.length(); i < length; i++) { current = input.charAt(i); if (last != '\\') { if (current == '"') { doubleQuote = !doubleQuote; } else if (current == '\'') { singleQuoteFound = !singleQuoteFound; } else if (current == delimiter && !doubleQuote && !singleQuoteFound) { output.add(input.substring(lastIndex, i)); lastIndex = i + 1; } } last = current; } output.add(input.substring(lastIndex)); return output;}这是一种非常粗略的方法,但从我的测试来看,它应该处理转义分隔符、单引号'和/或双"引号中的分隔符。可以这样调用:List<String> splitted = split("Hello|World|"No|split|here"|\|Was escaped|'Some|test'", '|');印刷:[Hello, World, "No|split|here", \|Was escaped, 'Some|test']