簡體   English   中英

Java 基於第 n 個分隔符的字符串修剪 position

[英]Java String trim based on delimiter nth position

我有一個 java 方法,在該方法中嘗試解析字段由 char ^A 分隔的字符串。 示例字符串如下所示。

HDR^A1^A20220106^ATYPE^AXXX^AJAPAN^AUNIFORM^AHELP^AEXAMPLE^A

我曾嘗試使用 apache ordinalIndexOf 但到目前為止還沒有成功。

您能否幫助建議是否有任何其他替代方法可用於這種情況。

public class HelloWorld{

public static int ordinalIndexOf(String str, String substr, int n) {

    int pos = str.indexOf(substr);

    while (--n > 0 && pos != -1)

        pos = str.indexOf(substr, pos+1);

    return pos;

}
     public static void main(String []args){
//Just kept it here as I need to use standards.. not using in below code
         String CTRL_A = Character.valueOf((char) 0x01).toString();    
     String str = "HDR^ABYE^A20220103065014^Agoogle.com_29958^ABUDDY^A1.0^A123456789012^AHAI^ABYE";

              int position = ordinalIndexOf(str,"^A",6);

        System.out.println(str.substring(0,position));

     }

}

預期 Output 字符串:

EVENT_HDR^ABYE^A20220103065014^Agoogle.com_29958^ABUDDY^A1.0^A123456789012

參考鏈接

如果有人不得不對問題投反對票,請隨時對您這樣做的原因發表評論,這將有助於提高自我提出更好的問題。 在請求幫助之前,我總是做一些自我研究,所以請幫助這樣做。

您可以嘗試使用 .indexOf() 方法。 因此,在這種情況下嘗試:

String str = "HDR^A1^A20220106^ATYPE^AXXX^AJAPAN^AUNIFORM^AHELP^AEXAMPLE^A";
System.out.println(str.indexOf("^A"));

這將打印給定 ZE83AED3DDF4667DEC0DAAAACB2BB3BE0BZ 的第一次出現的索引。 或者,您可以這樣做:

String str = "HDR^A1^A20220106^ATYPE^AXXX^AJAPAN^AUNIFORM^AHELP^AEXAMPLE^A";
System.out.println(str.indexOf("^A", 10)); // Start at index 10.

有關更多信息,請參閱此處的文檔: https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(java.lang.String)

這將刪除第 7 個^A及其后面的所有內容:

str = str.replaceAll("((.*?^A){6})^A.*", "$1");

暫無
暫無

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

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