我有一个字符串,如:
AB524D000000000000231200000001D0000000000000000524
字符串的长度为50.上面的字符串是1。这种类型的字符串可能长度为250即。五个字符串示例:
AB524D000000000000231200000001D0000000000000000524AB524D000000000000231200000001D0000000000000000524AB524D000000000000231200000001D0000000000000000524AB524D000000000000231200000001D0000000000000000524AB524D000000000000231200000001D0000000000000000524.
现在我的要求是我需要将D
更改为C
。
我使用以下代码替换一个字符串:
String code = key.substring(0, 2);
String currency = key.substring(2, 5);
String type = key.substring(5, 6);
String amount = key.substring(6, 22);
String rate = key.substring(22, 30);
String type2 = key.substring(30, 31);
String rAmount = key.substring(31, 47);
String currency2 = key.substring(47, 50);
String finalReq = code + currency + "C" + amount + rate + "C" + rAmount + currency2;
我得到了以下输出:
AB524C000000000000231200000001C0000000000000000524
这对于一个字符串是好的,我的意思是50长度字符串。但字符串长度可能为0-250(字符串1到5),但模式相同,如: AB524D000000000000231200000001D0000000000000000524 。
满足我要求的最佳逻辑是什么?。
注意:我不能string.replaceAll('D','C')
,因为我的第一个和第一个索引有字符我的意思是它也可能 D 。
答案 0 :(得分:1)
我会说那个
replaceAll("\\G(.{5})D(.{24})D(.{19})", "$1C$2C$3")
应该做的但我不知道你的字符串是否只包含你描述的格式的数据,或者你是否只想替换D
或D
所在地的任何字符是
replaceAll
使用正则表达式作为第一个参数,使用该正则表达式结果作为第二个参数的String。在正则表达式
.
点代表除新行.{x}
表示长度为x
的任何字符系列,例如.{3}
可以匹配AbZ
或1X9
,(...)
内的正则表达式将创建组,每个组都有其唯一的编号。此号码可以稍后用于replacement
字符串中$x
其中x
是组号(.{5})D(.{24})D(.{19})
将匹配任意5个字符(并将它们存储在组1中),然后D
然后24个字符(并创建存储在组2中),然后D
,最后任意19个字符(并将它们存储在第3组中)"$1C$2C$3"
我将使用在第一组中匹配的字符串,然后D
代替C
将包含来自第2组的匹配,然后再包含{{1} 1}}将放置D
,之后包括匹配的最后部分(第3组中存储的第二个C
之后的最后19个字符)D
表示字符串的开头或之前的匹配(因此上一个匹配和当前匹配之间不能有任何字符) 答案 1 :(得分:0)
只需使用java的String replace方法。
String old = "AB524D000000000000231200000001D0000000000000000524AB524D000000000000231200000001D0000000000000000524AB524D000000000000231200000001D0000000000000000524AB524D000000000000231200000001D0000000000000000524AB524D000000000000231200000001D0000000000000000524";
String output = old.replace('D', 'C');
答案 2 :(得分:0)
如果您确定每个字符串都是50个字符,那么:
index = finalReq.length() % 50;
for(int i = 0; i<index; i++){
String code = key.substring(0 + 50 * i, 2 + 50 * i);
String currency = key.substring(2 + 50 * i , 5 + 50 * i);
...
replace ...
}