Как я могу заменить все числа в скобках определенного типа (во всем документе) числами, которые являются частью их значения?

Моя проблема - это то, что я не смог решить после нескольких дней тщетных поисков. Я очень плохо знаком с XML или любым другим видом программирования, поэтому прошу прощения за любые ошибки, которые я делаю, объясняя!

По сути, как сказано в заголовке, мне нужно заменить все числа в скобках

быть на треть от их первоначальной стоимости. Как в notepad++, редакторе XML или любых других программах, с которыми вы можете быть знакомы, я могу это сделать? Есть ли на самом деле способ? Вся помощь очень ценится! Пример чисел 3.0. Я хочу изменить его на 1,0. Числа меняются по всему документу. XML версия 1.0

2 ответа

Это простая проблема, но ее трудно решить, если вы не знаете, как писать код. Вот самое простое решение для вашей проблемы.

Создайте файл Div.xsl и поместите в него следующие данные:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" />
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
  </xsl:template>
  <xsl:template match="Scale_Factor">
    <xsl:copy>
      <xsl:value-of select="text() div 3" />
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

Используя Notepad++, с установленным плагином xmltools. Откройте свой XML-файл, перейдите к Plugins >> XML Tools >> XSL Transformation и откройте файл div.xsl, который вы только что создали. Тада!

Есть много решений этой проблемы. Это решение сделано через XSLT и XPath. Посмотрите на это и это для получения дополнительной информации.

Ну, сопоставить цифры не так уж сложно. Вам просто нужно использовать поиск по регулярному выражению и сделать что-то вроде этого:

\<Scale_Factor\>([A-Za-z\.\s]*)([d]+)([A-Za-z\.\s]*)\<\/Scale_Factor\>

Соответствие этому регулярному выражению позволит вам заменить все числа, если вы замените его на что-то вроде этого: \1 (что-то, чтобы заменить числа) \3

Тем не менее, вы не можете заниматься математикой в ​​выражениях замены, так что вам не повезло здесь. Лучше всего было бы просто заменить числа итеративными командами замены или написать собственный исполняемый файл, который сделает это за вас.

Другие вопросы по тегам