Поиск подстроки, заключенной в двойные кавычки в java - PullRequest
0 голосов
/ 29 апреля 2020

Мой код:

  String content = '<?xml version="1.0" encoding="UTF-8"?>
        <svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" 
        xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
        <!-- Generator: Sketch 64 (93537) - https://sketch.com -->
        <title>Group 36 Copy 4</title>
        <desc>Created with Sketch.</desc>
        <g id="Portal" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
            <g id="Group-36-Copy-4" fill="#FFFFFF">
                <path d="M0,7.162 L6,8.877 L6.00036056,9 C6.00036056,10.0543618 6.81623835,10.9181651 7.85109822,10.9945143 L8.00036056,11 C9.10493006,11 10.0003606,10.1045695 10.0003606,9 L10.0003606,9 L10.0003606,8.98076197 L16,7.266 L16.0003606,14 C16.0003606,15.1045695 15.1049301,16 14.0003606,16 L2.00036056,16 C0.895791064,16 0.000360563943,15.1045695 0.000360563943,14 L0,7.162 Z M14.0003606,4 C15.1049301,4 16.0003606,4.8954305 16.0003606,6 L16,6.226 L9.99950581,7.94095939 C9.96827529,6.8636983 9.0851817,6 8.00036056,6 C6.94978154,6 6.08839609,6.81003398 6.00669844,7.83960773 L0,6.122 L0.000360563943,6 C0.000360563943,4.8954305 0.895791064,4 2.00036056,4 L14.0003606,4 Z" id="Combined-Shape"></path>
                <rect id="Rectangle" x="7.00036056" y="7" width="2" height="3" rx="1"></rect>
                <path d="M10.0003606,0 C11.0547224,0 11.9185257,0.815877791 11.9948748,1.85073766 L12.0003606,2 L12.0003606,4 L10.0003606,4 L10.0003606,2 L6.00036056,2 L6.00036056,4 L4.00036056,4 L4.00036056,2 C4.00036056,0.945638205 4.81623835,0.0818348781 5.85109822,0.00548573643 L6.00036056,0 L10.0003606,0 Z" id="Path-21" fill-rule="nonzero"></path>
            </g>
        </g>
    </svg>'

У меня есть строка с именем "content" в java, которая содержит содержимое любого файла SVG, загруженного пользователем. Теперь моя задача состоит в том, чтобы заменить значение, которое находится внутри этого атрибута fill = "# FFFFFF", на входные данные, предоставленные моим пользователем.

Пример : пользовательский ввод: ff0000, так что теперь строка содержимого должна заменить эту строку <g id="Group-36-Copy-4" fill="#FFFFFF"> как <g id="Group-36-Copy-4" fill="#ff0000">

Я застрял. Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Во-первых, ваш код не компилируется, потому что вы используете одинарные кавычки для типа символов, вам нужно использовать двойные кавычки для вашей строки и экранировать все внутренние двойные кавычки:

String content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\" version=\"1.1\"xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><!-- Generator: Sketch 64 (93537) - https://sketch.com --><title>Group 36 Copy 4</title><desc>Created with Sketch.</desc><g id=\"Portal\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Group-36-Copy-4\" fill=\"#FFFFFF\"><path d=\"M0,7.162 L6,8.877 L6.00036056,9 C6.00036056,10.0543618 6.81623835,10.9181651 7.85109822,10.9945143 L8.00036056,11 C9.10493006,11 10.0003606,10.1045695 10.0003606,9 L10.0003606,9 L10.0003606,8.98076197 L16,7.266 L16.0003606,14 C16.0003606,15.1045695 15.1049301,16 14.0003606,16 L2.00036056,16 C0.895791064,16 0.000360563943,15.1045695 0.000360563943,14 L0,7.162 Z M14.0003606,4 C15.1049301,4 16.0003606,4.8954305 16.0003606,6 L16,6.226 L9.99950581,7.94095939 C9.96827529,6.8636983 9.0851817,6 8.00036056,6 C6.94978154,6 6.08839609,6.81003398 6.00669844,7.83960773 L0,6.122 L0.000360563943,6 C0.000360563943,4.8954305 0.895791064,4 2.00036056,4 L14.0003606,4 Z\" id=\"Combined-Shape\"></path><rect id=\"Rectangle\" x=\"7.00036056\" y=\"7\" width=\"2\" height=\"3\" rx=\"1\"></rect><path d=\"M10.0003606,0 C11.0547224,0 11.9185257,0.815877791 11.9948748,1.85073766 L12.0003606,2 L12.0003606,4 L10.0003606,4 L10.0003606,2 L6.00036056,2 L6.00036056,4 L4.00036056,4 L4.00036056,2 C4.00036056,0.945638205 4.81623835,0.0818348781 5.85109822,0.00548573643 L6.00036056,0 L10.0003606,0 Z\" id=\"Path-21\" fill-rule=\"nonzero\"></path></g></g></svg>";

, затем вы можно использовать String's replace:

content = content.replace("fill=\"#FFFFFF\"", String.format("fill=\"%s\"", replacement));

. В этом случае, если вы хотите заменить в той же переменной, в противном случае используйте другую.

0 голосов
/ 29 апреля 2020

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

content = content.replace ("# FFFFFF", input)

Ссылка: https://www.javatpoint.com/java-string-replace

...