簡體   English   中英

從輸出Java中刪除雙引號

[英]Remove double quotes from output Java

我正在嘗試從字符串中提取一個URL。 但是我無法跳過輸出中的雙引號。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Main {
  public static void main(String[] args) {
    String s1 = "<a id=\"BUTTON_LINK\" style=\"%%BUTTON_LINK%%\" target=\"_blank\" href=\"https://||domainName||/basketReviewPageLoadAction.do\">%%CHECKOUT%%</a>";
    //System.out.println(s1);
    Pattern pattern = Pattern.compile("\\s*(?i)href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">\\s]+))");
    Matcher matcher = pattern.matcher(s1);

    if(matcher.find()){
      String url = matcher.group(1);
      System.out.println(url);
    }

  }
}

我的輸出是:

"https://||domainName||/basketReviewPageLoadAction.do"

預期輸出為:

https://||domainName||/basketReviewPageLoadAction.do

我無法進行字符串替換。 我在此輸出中添加了一些get參數,並將其附加到原始字符串。

您可以嘗試以下選項之一:

System.out.println(url.replaceAll("^\"|\"$", ""));
System.out.println(url.substring(1, url.length()-1));

正則表達式(?<=href=")([^\\"]*) 替換$1?params...

詳細資料

  • (?<=)正向后看
  • ()捕獲組
  • [^]匹配列表中不存在的單個字符
  • *零到無限次匹配
  • $1組1。

Java代碼

通過使用replaceAll函數,可以將參數?abc=12添加到捕獲組$1的末尾(在本例中是href

String text = "<a id=\"BUTTON_LINK\" style=\"%%BUTTON_LINK%%\" target=\"_blank\" href=\"https://||domainName||/basketReviewPageLoadAction.do\">%%CHECKOUT%%</a>";
text = text.replaceAll("(?<=href=\")([^\"]*)", String.format("$1%s", "?abc=12"));
System.out.print(text);

輸出

<a id="BUTTON_LINK" style="%%BUTTON_LINK%%" target="_blank" href="https://||domainName||/basketReviewPageLoadAction.do?abc=12">%%CHECKOUT%%</a>

代碼演示

丑陋,似乎可行。希望獲得幫助。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;

class Main {
    public static void main(String[] args) {
        String s1 = "<a id=\"BUTTON_LINK\" style=\"%%BUTTON_LINK%%\" target=\"_blank\" href= \"https://||domainName||/basketReviewPageLoadAction.do\">%%CHECKOUT%%</a>";
        //System.out.println(s1);
        Pattern pattern = Pattern.compile("\\s*(?i)href\\s*=\\s*(\"([^\"]*)\"|'([^']*)'|([^'\">\\s]+))");
        Matcher matcher = pattern.matcher(s1);

        if (matcher.find()) {
            String url = Stream.of(matcher.group(2), matcher.group(3),
                    matcher.group(4)).filter(s -> s != null).collect(Collectors.joining());
            System.out.print(url);

        }

    }
}

此解決方案目前適用。

Pattern pattern = Pattern.compile("\\s*(?i)href\\s*=\\s*\"([^\"]*)");

您將嘗試一下,

s1 = s1.Replace("\"", "");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM