Разделение переменных с несколькими аргументами? [Дубликат]

Привязать событие к родительскому объекту, который уже существует:

$(document).on("click", "selector", function() {
    // Your code here
});
152
задан weston 15 April 2017 в 20:24
поделиться

11 ответов

Я думаю, вам нужно включить оператор регулярного выражения OR:

String[]tokens = pdfName.split("-|\\.");

То, что у вас есть, будет соответствовать "-." а не "-" или a "."

256
ответ дан Tim Biegeleisen 19 August 2018 в 12:49
поделиться
  • 1
    зачем нам нужны две обратные косые черты ??? – pjain 21 February 2016 в 14:16
  • 2
    Символ . в регулярном выражении означает любой символ, отличный от новой строки. tutorialspoint.com/java/java_regular_expressions.htm В этом случае, однако, им нужен фактический символ .. Две обратные косые черты означают, что вы имеете в виду .. Обратная косая черта - это escape-символ. – Monkeygrinder 21 February 2016 в 20:25

Для двухсимвольной последовательности в качестве разделителей «И» и «ИЛИ» это должно быть выполнено. Не забудьте обрезать при использовании.

 String text ="ISTANBUL AND NEW YORK AND PARIS OR TOKYO AND MOSCOW";
 String[] cities = text.split("AND|OR"); 

Результат: города = {«СТАМБУЛ», «НЬЮ-ЙОРК», «ПАРИЖ», «ТОКИО», «МОСКВА»}

2
ответ дан ÖMER TAŞCI 19 August 2018 в 12:49
поделиться

Вы также можете указать регулярное выражение как аргумент в методе split (). Ниже приведен пример ....

private void getId(String pdfName){
String[]tokens = pdfName.split("-|\\.");
}
0
ответ дан bummi 19 August 2018 в 12:49
поделиться

Используя Guava , вы можете сделать это:

Iterable<String> tokens = Splitter.on(CharMatcher.anyOf("-.")).split(pdfName);
11
ответ дан ColinD 19 August 2018 в 12:49
поделиться

Я бы использовал Apache Commons:

import org.apache.commons.lang3.StringUtils;

private void getId(String pdfName){
    String[] tokens = StringUtils.split(pdfName, "-.");
}

Он разделится на любой из указанных разделителей, в отличие от StringUtils.splitByWholeSeparator(str, separator), который использует полная строка в качестве разделителя

3
ответ дан Edd 19 August 2018 в 12:49
поделиться

Попробуйте это регулярное выражение "[-.]+". «+» Обрабатывает последовательные символы разделителя как один. Удалите плюс, если вы этого не хотите.

43
ответ дан Peter Knego 19 August 2018 в 12:49
поделиться
  • 1
    @Lurkers: Единственная причина, по которой Питер не должен был убежать, что - был в том, что это first думает внутри [], в противном случае перед ним должна быть обратная косая черта (и конечно, чтобы поставить обратную косую черту перед ним, нам нужно two , потому что это строковый литерал). – T.J. Crowder 13 May 2011 в 19:32
  • 2
    Я думаю, что этот ответ лучше, чем принятый, потому что, когда вы используете логический оператор |, проблема в том, что один из ваших разделителей может быть частью ваших токенов результата. Это не произойдет с [-.] + – Jack' 3 January 2018 в 17:05
s.trim().split("[\\W]+") 

должен работать.

0
ответ дан pleft 19 August 2018 в 12:49
поделиться
  • 1
    Во-первых, нет, это не сработает - возможно, вы можете попробовать его до публикации? Тогда этот ответ такой же, как ваш, но работает. Наконец, вы должны проверить свое формирование ( должен работать. ). – Arount 11 October 2017 в 23:19

Лучше использовать что-то вроде этого:

s.split("[\\s\\-\\.\\'\\?\\,\\_\\@]+");

Добавили еще несколько символов в качестве образца. Это самый безопасный способ использования, так как обрабатываются пути . и '.

0
ответ дан Pritam Banerjee 19 August 2018 в 12:49
поделиться

Строка, которую вы даете split, является строковой формой регулярного выражения, поэтому:

private void getId(String pdfName){
    String[]tokens = pdfName.split("[\\-.]");
}

Это означает, что для разделения на любой символ в [] (нам нужно убежать - с обратным слэшем, потому что он особенный внутри [], и, конечно, нам нужно избежать обратного слэша, потому что это строка). (Обратно, . обычно является специальным, но не является специальным внутри [].)

10
ответ дан T.J. Crowder 19 August 2018 в 12:49
поделиться
  • 1
    В этом случае вам не нужно скрывать дефис, потому что [-.] нельзя интерпретировать как диапазон. – Alan Moore 13 May 2011 в 16:40
  • 2
    @Alan: Потому что это самое первое в классе, это правда. Но я всегда это делаю, слишком легко вернуться назад и добавить что-то перед собой, не задумываясь. Избежать этого ничего не стоит, поэтому ... – T.J. Crowder 13 May 2011 в 19:31
  • 3
    вы знаете, как избежать скобок? У меня есть String & quot; [200] Engineering & quot; что я хочу разбить на "200" , "Инжиниринг" – scottyseus 30 July 2013 в 22:03
  • 4
    О, ничего себе, я понял ... Мне пришлось использовать две обратной косой черты вместо одной. String[] strings = codes.get(x).split("\\[|\\]| "); - код для всех желающих – scottyseus 30 July 2013 в 22:05

Если вы знаете, что sting всегда будет в одном формате, сначала разделите строку на основе . и сохраните строку в первом индексе переменной. Затем разделите строку во втором индексе на основе - и сохраните индексы 0, 1 и 2. Наконец, разделите индекс 2 предыдущего массива на основе ., и вы должны были получить все соответствующие поля.

Обратитесь к следующему фрагменту:

String[] tmp = pdfName.split(".");
String val1 = tmp[0];
tmp = tmp[1].split("-");
String val2 = tmp[0];
...
-1
ответ дан UrsinusTheStrong 19 August 2018 в 12:49
поделиться
  • 1
    Это можно сделать за один шаг, так что сделайте это за один шаг. См. Другие ответы. – Kaj 13 May 2011 в 16:05
  • 2
    pdfName.split(".") приводит к массиву нулевой длины. – Alan Moore 13 May 2011 в 16:47
  • 3
    1) . Необходимо избегать как \\. – Shri 25 November 2016 в 20:18

Вы можете использовать регулярное выражение «\ W». Это соответствует любому символу, отличному от слова. Требуемая строка:

String[] tokens=pdfName.split("\\W");
23
ответ дан Varun Gangal 19 August 2018 в 12:49
поделиться
  • 1
    для меня это не работает. `String s = & quot; id (INT), name (STRING), & quot ;. Использование \\ W здесь создает массив длиной 6, где должно быть только 4 – user3527975 2 March 2015 в 04:25
  • 2
    Это также будет нарушено, если вход содержит символ Unicode. Лучше всего включать только фактический разделитель вместо «захватить все», с \W. – nhahtdh 7 October 2015 в 07:23
Другие вопросы по тегам:

Похожие вопросы: