Форум программистов, компьютерный форум, киберфорум
Наши страницы
XML/XSL
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
1

Как запоминать строки в подобие массива и сравнивать их с другими строками?

19.08.2015, 22:32. Просмотров 1069. Ответов 21
Метки нет (Все метки)

Привет!

Уже мозги кипят от нелогичности синтаксиса xsl - всё не могу постичь дзен.

В чём суть: есть у меня список вида
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<product>
   <name>qwe</name>
   <version>9.0.0</version>
   <info>
       <property>id1012</property>
        ....
       <property>id5124</property>
   </info>
</product>
....
<product>
   <name>qwe</name>
   <version>9.1.4</version>
   <info>
       <property>id4512</property>
        ....
       <property>id7724</property>
   </info>
</product>
таких вот продуктов у меня больше тысячи.
Причём свойства продуктов в рамках одного продукта не повторяются, версии продуктов могут повторяться. Свойства в пределах версии одинаковы, поэтому можно считать свойства только с первого продукта с не встречавшейся ранее версии.
Я задумал сделать отчёт из xml файла с этим списком посредством xslt в котором должно быть примерно следующую таблицу:
||===========================================||
||9.0.0 || количество продуктов с версией 9.0.0 || id1012, id5124 ||
||===========================================||
||9.0.1 || количество продуктов с версией 9.0.0 || .................... ||
||===========================================||
||===============....................===================||
||===========================================||
||9.0.4 || количество продуктов с версией 9.0.4 || id4512, id7724 ||
||===========================================||

Для этого мне надо знать как записывать строки в что-то на подобие массива и потом сравнивать значения массива с другими строками.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2015, 22:32
Ответы с готовыми решениями:

Как сравнивать строки?
Ребят, а может вы знаете, как в этом языке сравнивать строки? походу просто string1&gt;string2 не...

Как сравнивать строки?
где ошибка? if ((textBox1.Text + textBox1.Text) = (textBox2.Text)) { ...

Как сравнивать строки?
Что-то смотрю в туториалы, но ничего не выходит. Как написать сравнение строк?...

Как сравнивать строки
Я ввожу в Text2 слово Вашингтон и в коде пишу If Text2.Text = &quot;Вашингтон&quot; Then k = 1 End If ...

Как правильно сравнивать строки?
Добрый день! У меня возникла такая проблема. Не могу понять в чем дело. Имеется очень...

21
diadiavova
4187 / 1558 / 471
Регистрация: 11.04.2015
Сообщений: 2,834
Записей в блоге: 36
20.08.2015, 17:42 2
Цитата Сообщение от Gudsaf Посмотреть сообщение
Для этого мне надо знать как записывать строки в что-то на подобие массива и потом сравнивать значения массива с другими строками.
Никак. Тебе нужно сгруппировать продукты по версиям. Просто загугли "группировка в XSLT", думаю, все что тебе надо найдется очень быстро.

Для приведенного примера примерно набросал как мог бы выглядеть шаблон. Правда формирует он XML, а не обычный текст, но там изменить на то, что нужно уже будет несложно. Все аспекты не проверял, поскольку более полного примера нет, например нет документа, где было бы несколько продуктов одной версии, так что не гарантирую, что будет правильно работать, но принцип понять можно.

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
 
  <xsl:template match="/">
    <table>
      <xsl:for-each select="//version">
        <xsl:variable name="version" select="text()"/>
        <xsl:if test="count(preceding::version[text() = $version]) = 0">
          <xsl:variable name="products" select="//product[version = $version]"/>
          <xsl:variable name="ids" select="$products/info/property"/>
          <xsl:variable name="id-list">
            <xsl:for-each select="$ids">
              <xsl:value-of select="."/>
              <xsl:if test=". != $ids[last()]">
                <xsl:text>, </xsl:text>
              </xsl:if>
              <xsl:text></xsl:text>
            </xsl:for-each>
          </xsl:variable>
          <row version="{$version}" product-count="{count($products)}" ids="{$id-list}"/>
        </xsl:if>
      </xsl:for-each>
    </table>
  </xsl:template>
</xsl:stylesheet>
1
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
24.08.2015, 15:57  [ТС] 3
Хм. Я не мостак в xsl, а как можно при наличии многих копий одних и тех же версий, к примеру версий 9.1.1, сделать так, чтобы у меня только один раз был выбран продукт с версией 9.1.1, при этом другие были проигнорированы?

Я же почему и задавался вопросом с массивом - чтобы сохранить в массив "9.1.1" и каждый раз сверяться с ячейками массива - есть там 9.1.1 или нет, если есть, то я уже такой продукт брать в обработку не стану, если вдруг у меня попался продукт с новой версией, то я запишу номер этой версии в массив и обработаю её.
0
diadiavova
4187 / 1558 / 471
Регистрация: 11.04.2015
Сообщений: 2,834
Записей в блоге: 36
24.08.2015, 16:58 4
Gudsaf, ну я вообще-то пример именно так и писал. Просто проверить не на чем было. А что, разве не работает?
0
24.08.2015, 16:58
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
24.08.2015, 17:54  [ТС] 5
Цитата Сообщение от diadiavova Посмотреть сообщение
А что, разве не работает?
Вообще есть некоторые проблемы. Я пока остановился на этом:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
 
  <xsl:template match="/">
    <table>
      <xsl:for-each select="//version">
        <xsl:variable name="version" select="text()"/>
        <xsl:if test="count(preceding::version[text() = $version]) = 0">
          <xsl:variable name="products" select="//product[version = $version]"/>
          ....
          </xsl:if>
      </xsl:for-each>
    </table>
  </xsl:template>
</xsl:stylesheet>
Переношу код на свой XML, точнее пытаюсь перенести. Проблема в этой строчке:
XML
1
2
        <xsl:if test="count(preceding::version[text() = $version]) = 0">
         </xsl:if>
Я немного её доработал:
XML
1
2
3
        <xsl:if test="count(preceding::version[text() = $version]) = 0">\
           <xsl:text> ololo </xsl:text>
        </xsl:if>
и теперь у меня ololo выдаёт кучу раз - столько сколько продуктов, а версий на все продукты у меня около 7-10. То есть если я хочу просто вывести эти 7-10 продуктов с неповторяющимися версиями, то так не происходит.
0
diadiavova
4187 / 1558 / 471
Регистрация: 11.04.2015
Сообщений: 2,834
Записей в блоге: 36
24.08.2015, 21:24 6
Цитата Сообщение от Gudsaf Посмотреть сообщение
Переношу код на свой XML, точнее пытаюсь перенести. Проблема в этой строчке:
То есть у тебя какой-то другой XML, и ты пытаешься перенести этот пример на него? Это возможно, но при условии, что ты разобрался как это работает. Если у тебя возникли проблемы с моим примером и он работает не так как надо, то опиши, что именно он делает не так. А если это проблемы переноса кода на другую структуру XML, то для того, чтобы тебе помочь, мне надо больше знать об этой структуре.
0
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
24.08.2015, 21:59  [ТС] 7
Цитата Сообщение от diadiavova Посмотреть сообщение
То есть у тебя какой-то другой XML, и ты пытаешься перенести этот пример на него? Это возможно, но при условии, что ты разобрался как это работает. Если у тебя возникли проблемы с моим примером и он работает не так как надо, то опиши, что именно он делает не так. А если это проблемы переноса кода на другую структуру XML, то для того, чтобы тебе помочь, мне надо больше знать об этой структуре.
Завтра в 10:40 по мск у меня будет возможность слить дерево того XML, для которого собственно и пишется шаблон. Верно я понимаю что вы в своём шаблоне выбираете через
XML
1
<xsl:for-each select="//version">
все узлы с названием version, а можно тогда было вместо
XML
1
 <xsl:variable name="ids" select="$products/info/property"/>
написать
XML
1
 <xsl:variable name="ids" select="$//property"/>
?
Так бы мы тоже по идее выбрали каждый узел property, как раз в каждом узле version.
0
diadiavova
4187 / 1558 / 471
Регистрация: 11.04.2015
Сообщений: 2,834
Записей в блоге: 36
24.08.2015, 22:09 8
Цитата Сообщение от Gudsaf Посмотреть сообщение
Верно я понимаю что вы в своём шаблоне выбираете через
Код XML
Выделить код
1
<xsl:for-each select="//version">
все узлы с названием version
Да, но там, если дальше не смотреть, то понять будет сложно. Для каждого такого узла сначала запоминается номер версии, а потом с помощью if проверяется, является ли он первым таким узлом в документе. Это надо для того, чтобы обойти каждую версию только один раз. То есть берутся только такие узлы, значения которых ранее в документе не встречались. Так понятнее?
Цитата Сообщение от Gudsaf Посмотреть сообщение
$//property
На это процессор выдаст ошибку.
Цитата Сообщение от Gudsaf Посмотреть сообщение
Так бы мы тоже по идее выбрали каждый узел property, как раз в каждом узле version.
Да это собственно и делается далее. Получив каждую версию по одному разу мы потом отбираем из документа те id, которые соответствуют именно данной версии.
Я еще раз задаю тот же вопрос: тот пример, который я выложил работает некорректно? Он что не группирует свойства по версиям или что? Мне непонятно, зачем ты пытаешься решить проблему, которая уже вроде как решена?
0
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
24.08.2015, 22:37  [ТС] 9
Броблема в том, что у меня нет нормальной среды разработки для шаблонов. Я не могу отдебажить код шаблона который пытаюсь с вашей помощью писать и пока использую процессор вшитый в совсем другой продукт, по этому я не могу вснуть xml из первого поста и применить к нему ваш шаблон.

Ещё это связано с тем, что xml как оказалось - другой, но похожий по сути на тот, что я изложил в первом посте.
Я сегодня видел этот xml - он чуть другой. Вот и все дела. Я просто даже не могу сказать - работает ваш шаблон или нет - я просто считаю его рабочим и исходя из этого пытаюсь перенести на другой-похожий-xml.

Цитата Сообщение от diadiavova Посмотреть сообщение
является ли он первым таким узлом в документе
То есть текстовое поле узла version сравнивается со всеми другими текстовыми полями других узлов version?
0
diadiavova
4187 / 1558 / 471
Регистрация: 11.04.2015
Сообщений: 2,834
Записей в блоге: 36
24.08.2015, 22:46 10
Цитата Сообщение от Gudsaf Посмотреть сообщение
Броблема в том, что у меня нет нормальной среды разработки для шаблонов.
Эта проблема решается установкой такой среды )))
Цитата Сообщение от Gudsaf Посмотреть сообщение
я просто считаю его рабочим и исходя из этого пытаюсь перенести на другой-похожий-xml.
Ну тогда надо для начала разобраться как он работает.
Цитата Сообщение от Gudsaf Посмотреть сообщение
То есть текстовое поле узла version сравнивается со всеми другими текстовыми полями других узлов version?
Ну почти, и не со всеми, а только с теми, которые расположены в документе до текущего узла. Если все-таки говорить более строго, там собирается коллекция узлов которые во-первых предшествуют данному в документе, а во-вторых - имеют такое значение текстового узла и подсчитывается количество элементов в этой коллекции. Если коллекция пуста, значит элемент с таким значением попадается в документе впервые. Отобрав узлы таким образом мы получим коллекцию версий, в которой будут содержаться все версии и при этом они не будут повторяться. Дальше мы обходим этим версии и для каждой формируем набор данных. Там уже дальше будет несложно отобрать данные, соответствующие каждой конкретной версии.
0
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
24.08.2015, 22:58  [ТС] 11
Цитата Сообщение от diadiavova Посмотреть сообщение
Если все-таки говорить более строго, там собирается коллекция узлов которые во-первых предшествуют данному в документе, а во-вторых - имеют такое значение текстового узла и подсчитывается количество элементов в этой коллекции. Если коллекция пуста, значит элемент с таким значением попадается в документе впервые. Отобрав узлы таким образом мы получим коллекцию версий, в которой будут содержаться все версии и при этом они не будут повторяться. Дальше мы обходим этим версии и для каждой формируем набор данных. Там уже дальше будет несложно отобрать данные, соответствующие каждой конкретной версии.
А, вот для чего вы считаете их количество, а я понять не как не мог - и ведь правда, если таких узлов ноль, то значит узел встречается впервые, и значит для него можно выгрузить ID - хитрое решение! Потом соответственно мы возьмём следующий узел version и сделаем коллекцию из его предшествующих братьев, и так далее далее далее.

А что мне делать, если в моём настоящем шаблоне, все узлы описаны не так:
XML
1
<xsl:variable name="ids" select="$products/info/property"/>
, а так:
XML
1
<xsl:variable name="ids" select="$r:products/r:info/r:property"/>
r: - это какое-то сокращение, по типу namespace, как я понял.
0
diadiavova
4187 / 1558 / 471
Регистрация: 11.04.2015
Сообщений: 2,834
Записей в блоге: 36
24.08.2015, 23:15 12
Цитата Сообщение от Gudsaf Посмотреть сообщение
r: - это какое-то сокращение, по типу namespace, как я понял.
Это называется префикс. Он ставит узел в соответствие некоторому пространству имен. Но пространство это должно быть объявлено. Если привести грубое соответствие императивным языкам программирования, но считай пространство имен некоторым сложным объектом, а префикс это переменная ссылающаяся на этот объект.
Цитата Сообщение от Gudsaf Посмотреть сообщение
А что мне делать, если в моём настоящем шаблоне, все узлы описаны не так:
Поскольку XSLT - это XML, соответственно для работы в нем с пространствами имен надо их объявить в самом преобразовании. То есть если в документе-источнике где-то есть объявление xmlns:r="http://...", то такое же объявление должно присутствовать и в XSLT. В этом случае ты поставишь в соответствие префиксу r то же самое пространство имен, что и в исходном документе и он там будет иметь то же самое значение. Таким образом написанное тобой выражение XPath с префиксом будет работать.
Лучше всего объявление в корневом элементе размещать. Это не всегда лучший выбор, но как правило. Все нюансы работы с пространствами имен объяснять долго и муторно, но в большинстве случаев описанных правил будет достаточно.

Добавлено через 3 минуты
Хотя вот это $r:products/r:info/r:property работать не будет. Знак доллара указывает на то, что идущее за ним имя - это имя переменной, а не узла. Обрати внимание, что в примере выше я объявляю переменную products, а потом ссылаюсь на нее как $products. То есть это не узел, а стало быть $r:products вообще не имеет смысла.
0
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
25.08.2015, 10:57  [ТС] 13
Понятно. Сейчас доеду до практики и посмотрю как сработает
XML
1
 count(preceding::r:version[text() = $version]) = 0
.
Ведь у меня там в исходном шаблоне, который так же работет с xml везде используется префикс - видимо без прификса работать не будет.
Однако данная конструкция выглядит страшновато и я подозреваю что она так же не сработает именно из-за ввода префикса.

Добавлено через 1 час 13 минут
Так, добрался до xml для которого надо писать шаблон:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<content xsi:schemaLocation="..." xmlns:xsd="..." xmlns="..." xmlns:xsi="...">
     <data>
          <host ip=... task=... ...>
               <info>...</info>
               <target_objects>
                    <soft type=... id=... ...>
                         <name>...</name>
                         <version>...</version>
                         ...
                    </soft>
                    <soft type=... id=... ...>
                         <name>...</name>
                         <version>...</version>
                         ...
                    </soft>
                    ...
                    <soft type=... id=... ...>
                         <name>...</name>
                         <version>...</version>
                         ...
                    </soft>
               </target_objects>
          </host>
     </data>
<content>
А шаблон, с которого я пытаюсь делать кальку (он как раз обрабатывает данный xml) в шапке имеет следующее:
XML
1
<xsl:stylesheet xmlns:xsl=".../1999/.." xmlns:xs="" xmlns:r="" xmlns:ex="" exclude-result-prefixes="xs ex r" version="2.0">
И собственно повсеместно где идут обращения к узлам в выражениях XPath используется префикс "r:" .

Добавлено через 25 минут
Ура! Он выгрузил по одной версии! Итоговый код шаблона пока такой:
XML
1
2
3
4
5
6
7
8
9
10
11
12
<xsl:stylesheet ...>
...
<xsl:template match=r:soft">
   <xsl:for-each select="r:version">
      <xsl:variable name="version" select="text()"/>
      <xsl:if test="count(preceding::r:version[text()=$version])=0">
         <xsl:text>+</xsl:text>
         <xslvalue-of select="$version"/>
      </xsl:if>
   </xsl:for-each> 
</xsl:template >
...
0
diadiavova
4187 / 1558 / 471
Регистрация: 11.04.2015
Сообщений: 2,834
Записей в блоге: 36
25.08.2015, 11:11 14
Gudsaf, чойт я у тебя в документе префиксов не вижу. Ну и по пространствам вообще не всё ясно, но раз работает, тогда ладно ))). Кроме того, о том, что используешь вторую версию xslt предупреждать надо, там есть встроенный механизм группировки, так что можно было ввобще без танцев с бубнами обойтись.
0
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
25.08.2015, 11:53  [ТС] 15
А какую книгу можете посоветовать хорошую?

Кстати это ещё не всё, теперь мне надо для каждой версии применить ещё один шаблон. в Теории он должен стоять вместо
XML
1
<xsl:text>+</xsl:text>
но пока его вставка туда не особо помогла - нет ни каких изменений. На самом деле дерево xml файла ещё больше, я часть скрыл, чтобы не загружать картину.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<content xsi:schemaLocation="..." xmlns:xsd="..." xmlns="..." xmlns:xsi="...">
     <data>
          <host ip=... task=... ...>
               <info>...</info>
               <target_objects>
                    <soft type=... id=... ...>
                         <name>...</name>
                         <version>...</version>
                         ...
                    </soft>
                    <soft type=... id=... ...>
                         <name>...</name>
                         <version>...</version>
                         ...
                    </soft>
                    ...
                    <soft type=... id=... ...>
                         <name>...</name>
                         <version>...</version>
                         <vulners>
                              <vulner id="..." status="..." ...>
                              <vulner id="..." status="..." ...>
                              ...
                              <vulner id="..." status="..." ...>
                         </vulners>
                         ...
                    </soft>
               </target_objects>
          </host>
     </data>
     <vulners>
          <vulner id="..." ...>
               <title>...</title>
               ...
               <global_id name="..." .../>
          </vulner>
     </vulners>
<content>
Сейчас думаю как взять кусок старого написанного кем-то шаблона и прикрутить его к нашим одиночным версиям, пока сделал так, заменил "+" на вставку шаблона, но особо выхлопа не образовалось от этого:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<xsl:template match="r:vulner">
   <xsl:for-each select="r:global_id">
      <xsl:choose>
         <xsl:when test="@name='DFA'">
            <xslvalue-of select="."/>
         </xsl:when>
         <xsl:otherwise/>
      </xsl:choose>
   </xsl:for-each>
</xsl:template> 
 
<xsl:template match="r:soft">
   <xsl:for-each select="r:version">
      <xsl:variable name="version" select="text()"/>
      <xsl:if test="count(preceding::r:version[text()=$version])=0">
         <xsl:apply-templates select="/r:content/r:vulner[@id=current()/r:target_objects/r:soft/r:vulners/r:vulner/@id]"/>
         <xslvalue-of select="$version"/>
      </xsl:if>
   </xsl:for-each> 
</xsl:template >
Добавлено через 5 минут
И кажется я понимаю в чём противоречие - я пытаюсь находясь в одной ветке дерева стянуть информацию с другой (нахожусь в data, а стянуть надо из vulner - а они братья по уровню). надо как-то из
XML
1
2
3
4
5
<xsl:template match=r:soft">
   <xsl:for-each select="r:version">
      ...
   </xsl:for-each> 
</xsl:template >
подняться на верх, выше уровня data
0
diadiavova
4187 / 1558 / 471
Регистрация: 11.04.2015
Сообщений: 2,834
Записей в блоге: 36
25.08.2015, 12:06 16
Двойной слэш в начале выражения обеспечит поиск по всему документу без учёта контекста. Фактически контекстом будет сам документ. В моём примере всё это есть.
0
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
25.08.2015, 12:13  [ТС] 17
Цитата Сообщение от diadiavova Посмотреть сообщение
Двойной слэш в начале выражения обеспечит поиск по всему документу без учёта контекста. Фактически контекстом будет сам документ. В моём примере всё это есть.
А по-моему ещё проблема в current() - при вызове она нам даст узел version и тогда по идее строка для поиска и создания id будет:
XML
1
"version/vulners/vulner"
а это не верно, должно быть
XML
1
"soft/vulners/vulner"
верно я мыслю? я сейчас попробую исправить ситуацию - надо поднять к отцу узла version и от него перейти на ветку vulners
0
diadiavova
4187 / 1558 / 471
Регистрация: 11.04.2015
Сообщений: 2,834
Записей в блоге: 36
25.08.2015, 12:22 18
Родительский узел обозначается двумя точками. Если надо подняться выше, для этого есть ось ancestor
0
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
25.08.2015, 15:12  [ТС] 19
Испробовал два варианта:
Этот с подъёмом на верхний уровень не работает
XML
1
2
3
4
<xsl:if test="count(preceding::r:version[text()=$version])=0">
         <xsl:apply-templates select="/r:content/r:vulners/r:vulner[@id=../r:vulners/r:vulner/@id]"/>
         <xslvalue-of select="$version"/>
</xsl:if>
Этот вариант работает, но я предполагаю что он выгружает не то, что надо (выгружает всё что есть в ветке content-vulners-vulner каждый раз - то есть для каждой версии), сейчас потестирую, гляну что как
XML
1
2
3
4
<xsl:if test="count(preceding::r:version[text()=$version])=0">
         <xsl:apply-templates select="/r:content/r:vulners/r:vulner"/>
         <xslvalue-of select="$version"/>
</xsl:if>
Добавлено через 1 час 3 минуты
Всё идет по плану, я ещё вспомнил про ваш шаблон в самом начале темы, и теперь уже могу выгрузить список ID: осталось для каждого ID сходить в ветку content-vulners-vulner и по id вывести информацию. Сейчас это сделано копипастом с вашего примера:
XML
1
2
3
4
5
6
7
8
9
<xsl:if test="count(preceding::r:version[text()=$version])=0">
 <xsl:variable name="products" select="//product[version = $version]"/>
          <xsl:variable name="ids" select="parent::*/r:vulners/r:vulner/@id"/>
          <xsl:variable name="id-list">
            <xsl:for-each select="$ids">
              <xsl:value-of select="."/>
               <!-- теперь тут надо правильно обратиться в ветку content-vulners-vulner и по id вывести информацию -->
            </xsl:for-each>
          </xsl:variable>
0
Gudsaf
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
26.08.2015, 16:57  [ТС] 20
Всё, сделал что хотел)
0
26.08.2015, 16:57
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2015, 16:57

Как правильно сравнивать строки
есть проверка типа if(!textArea.getText().isEmpty()&amp;&amp;text1==text2) условие не выполняется ...

Как правильно сравнивать строки с числами?
Здравствуйте! Первичный ключ в access, строка, содержащая число из 20 знаков. Как правильно её...

Как сравнивать элементы массива?
Задан массив целых чисел, который может содержать повторяющиеся члены. Получить все числа, которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.