Ответ 1
String.split(String regex)
Аргумент является выражением regualr, а ^
имеет особое значение; "привязка к началу"
Вам нужно сделать:
String[] need = all[1].split("\\^");
Выйдя из ^
, вы говорите: "Я имею в виду персонажа" ^ "
Я получаю строку из Интернета, которая выглядит так:
Latest [email protected]^Killing Your Number^May/15/2009
Затем мне нужно хранить 04x22
, Killing Your Number
и May/15/2009
в разных переменных, но это не сработает.
String[] all = inputLine.split("@");
String[] need = all[1].split("^");
show.setNextNr(need[0]);
show.setNextTitle(need[1]);
show.setNextDate(need[2]);
Теперь он сохраняет только NextNr
, со всей строкой
04x22^Killing Your Number^May/15/2009
Что не так?
String.split(String regex)
Аргумент является выражением regualr, а ^
имеет особое значение; "привязка к началу"
Вам нужно сделать:
String[] need = all[1].split("\\^");
Выйдя из ^
, вы говорите: "Я имею в виду персонажа" ^ "
Если у вас есть разделитель, но вы не знаете, содержит ли он специальные символы, вы можете использовать следующий подход
String[] parts = Pattern.compile(separator, Pattern.LITERAL).split(text);
Используя guava, вы можете сделать это элегантно и быстро:
private static final Splitter RECORD_SPLITTER = Splitter.on(CharMatcher.anyOf("@^")).trimResults().omitEmptyStrings();
...
Iterator<String> splitLine = Iterables.skip(RECORD_SPLITTER.split(inputLine), 1).iterator();
show.setNextNr(splitLine.next());
show.setNextTitle(splitLine.next());
show.setNextDate(splitLine.next());
public static String[] split(String string, char separator) {
int count = 1;
for (int index = 0; index < string.length(); index++)
if (string.charAt(index) == separator)
count++;
String parts[] = new String[count];
int partIndex = 0;
int startIndex = 0;
for (int index = 0; index < string.length(); index++)
if (string.charAt(index) == separator) {
parts[partIndex++] = string.substring(startIndex, index);
startIndex = index + 1;
}
parts[partIndex++] = string.substring(startIndex);
return parts;
}
String input = "Latest [email protected]^Killing Your Number^May/15/2009";
//split will work for both @ and ^
String splitArr[] = input.split("[@\\^]");
/*The output will be,
[Latest Episode, 04x22, Killing Your Number, May/15/2009]
*/
System.out.println(Arrays.asList(splitArr));