MSH|^~\&|RAD|MCH|SOARCLIN|MCH|201309281506||ORU^R01|RMS|P|2.4
PID|0001|_MISSING_|059805^a~059805^a~059805^a||RENNER^KATHRYN^
在如上所述的字符串中,我需要在|的基础上替换字符串(管道标志)计数。
e.g。 :
MSH线要在(|)管道标志" MCH"的3rth位置后更换 用" ABC"
输入:MSH | ^〜\& | RAD | MCH | SOARCLIN | MCH | 201309281506 || ORU ^ R01 | RMS | P | 2.4
输出:MSH | ^〜\& | RAD | MCH | SOARCLIN | ABC | 201309281506 || ORU ^ R01 | RMS | P | 2.4
答案 0 :(得分:1)
String repSection( String del, int count, String rep ){
String[] toks = theString.split( Pattern.quote( del ) );
toks[count] = rep;
theString = String.join( del, toks );
}
呼叫:
String result = repSection( "|", 3, "ABC" );
这取决于单独计算;第3和第4个管道字符之间有什么关系并不重要。
我更喜欢这种花哨和难以维护的正则表达式。
s = s.replaceAll( "^((?:[^|]*\\|){3})[^|]*", "$1|ABC" );
同样,这并不关心第3和第4个管道符号之间的内容。