Как модели MS Visio хранятся в базе данных?

Основываясь на ответе @ zx81, вы получите подходящую идею, я добавил Java 9 results call, который возвращает Stream. Поскольку OP хотел использовать split, я собрал String[], как это делает split.

Осторожно, если у вас есть пробелы после разделителей запятой (a, b, "c,d"). Затем вам нужно изменить шаблон.

Jshell demo

$ jshell
-> String so = "123,test,444,\"don't split, this\",more test,1";
|  Added variable so of type String with initial value "123,test,444,"don't split, this",more test,1"

-> Pattern.compile("\"[^\"]*\"|[^,]+").matcher(so).results();
|  Expression value is: java.util.stream.ReferencePipeline$Head@2038ae61
|    assigned to temporary variable $68 of type java.util.stream.Stream<MatchResult>

-> $68.map(MatchResult::group).toArray(String[]::new);
|  Expression value is: [Ljava.lang.String;@6b09bb57
|    assigned to temporary variable $69 of type String[]

-> Arrays.stream($69).forEach(System.out::println);
123
test
444
"don't split, this"
more test
1

Код

String so = "123,test,444,\"don't split, this\",more test,1";
Pattern.compile("\"[^\"]*\"|[^,]+")
    .matcher(so)
    .results()
    .map(MatchResult::group)
    .toArray(String[]::new);

Объяснение

  1. Regex [^"] соответствует: цитата, ничего, кроме цитаты, цитата.
  2. Regex [^"]* соответствует: цитата, ничего, кроме цитаты 0 (или более) раз, цитата.
  3. Это регулярное выражение должно идти первым, чтобы «выиграть», в противном случае сопоставление ничего, кроме запятой 1 или более раз , то есть: [^,]+ - будет «побеждать».
  4. results() требует Java 9 или выше.
  5. Он возвращает Stream<MatchResult>, который я сопоставляю с помощью вызова group() и собираю в массив строк. Вызов Parameterless toArray() возвратит Object[].
0
задан Sam 13 July 2018 в 06:32
поделиться

1 ответ

Если у вас нет специального BPM-Addin для Visio, вам, вероятно, потребуется перестроить диаграммы с помощью кода. Вам понадобятся позиция, соединения, тип формы (операция) и, наконец, текст.

0
ответ дан y4cine 17 August 2018 в 13:32
поделиться
Другие вопросы по тегам:

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