[英]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.