簡體   English   中英

如何在Java中刪除空行和其余字符

[英]how to delete empty line and rest of the character in java

我想從字符串中刪除空行和其余字符,我想僅從字符串中解析特定值。

我想從我的字符串中單獨獲得該值23243232,在產品價格之后,我已經有一個空行空間,並且再次有一些字符,因此我將空行用作分隔符,並嘗試單獨獲得產品價格。 但是我還獲得了23243232的其他值。有人可以幫助我從此字符串中獲取23243232嗎?

String actualResponse = "--sGEFoZV85Qnkco_QAU5b6B3Tt1OrOOFkArwzoF_yDmmW5DfupJDtuHlh20LL2SAbWZb8a3exzoF_yDmmW5DfupJDtuHlh20LL2SAbWZb8a3exsGEFoZV85Qnkco_QAU5b6B3Tt1OrOOFkArw\r\n"
                + "Product-Discription: form-name; productName=\"iPhone\"\r\n" + "Product-Type: Mobile\r\n"
                + "Product-Price: 23243232\r\n" + "\r\n" + "%dsafdfw32.323efaeed\r\n" + "#$#@#@#";

        String productPrice = actualResponse.substring(actualResponse.lastIndexOf("Product-Price:") + 15);
        System.out.println("Printing product price ..." + productPrice);
        String finalString = productPrice.replaceAll(" .*", "");

這是我得到的輸出:

Printing product price ...23243232

%dsafdfw32.323efaeed
#$#@#@#

但是我只需要23243232-僅此值。

應用正則表達式可提高靈活性。

    String content = "--sGEFoZV85Qnkco_QAU5b6B3Tt1OrOOFkArwzoF_yDmmW5DfupJDtuHlh20LL2SAbWZb8a3exzoF_yDmmW5DfupJDtuHlh20LL2SAbWZb8a3exsGEFoZV85Qnkco_QAU5b6B3Tt1OrOOFkArw\r\n"
                    + "Product-Discription: form-name; productName=\"iPhone\"\r\n" + "Product-Type: Mobile\r\n"
                    + "Product-Price: 23243232\r\n" + "\r\n" + "%dsafdfw32.323efaeed\r\n" + "#$#@#@#";

            String re1 = "\\bProduct-Price:\\s";    // Word 1
            String re2 = "(\\d+)";    // Integer Number 1

            Pattern p = Pattern.compile(re1 + re2, Pattern.DOTALL);
            Matcher m = p.matcher(content);

            while (m.find()) {
                for (int i = 0; i <= m.groupCount(); i++) {
System.out.println(String.format("Group=%d | Value=%s",i, m.group(i)));
                }
            }

它將打印出:

組= 0 | 價值=產品價格:23243232

群組= 1 | 值= 23243232

這是因為您將從索引: actualResponse.lastIndexOf("Product-Price:") + 15到字符串的末尾直接打印整個子字符串。

您還需要在子字符串方法中提供結束索引作為第二個參數。

您需要使用此:

int start = actualResponse.lastIndexOf("Product-Price:") + 15;
int end   = actualResponse.indexOf("\r\n", start); // The first "\r\n" from the index `start`
String productPrice = actualResponse.substring(start, end); 

我想到了第一個解決方案。 它不是最好的,但可以解決您的問題。

StringBuilder finalString =new StringBuilder();
        for (Character c : productPrice.toCharArray()) {
            if(Character.isDigit(c)){
                finalString.append(c);
            }else{
                break;
            }
        }
This will give  your final ans...
 String actualResponse ="--sGEFoZV85Qnkco_QAU5b6B3Tt1OrOOFkArwzoF_yDmmW5DfupJDtuHlh20LL2SAbWZb8a3exzoF_y         DmmW5DfupJDtuHlh20LL2SAbWZb8a3exsGEFoZV85Qnkco_QAU5b6B3Tt1OrOOFkArw\r\n"
                + "Product-Discription: form-name; productName=\"iPhone\"\r\n" + "Product-Type: Mobile\r\n"
                + "Product-Price: 23243232\r\n" + "\r\n" + "%dsafdfw32.323efaeed\r\n" + "#$#@#@#";

String productPrice = actualResponse.substring(actualResponse.lastIndexOf("Product-Price:") + 15);
System.out.println("Printing content lenght..." + productPrice.split("\r\n")[0]);

暫無
暫無

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

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