gpt4 book ai didi

java - 替换多个索引中的字符

转载 作者:行者123 更新时间:2023-12-01 14:02:37 25 4
gpt4 key购买 nike

我有一个字符串,例如:

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。

最佳答案

我会这么说

replaceAll("\\G(.{5})D(.{24})D(.{19})", "$1C$2C$3")

应该可以解决问题,但我不知道您的字符串是否只包含您描述的格式的数据,或者您是否只想替换 D或任何可以位于 D 的位置的字符是。

<小时/>

replaceAll使用正则表达式作为第一个参数,并使用可以使用该正则表达式的结果的字符串作为第二个参数。在正则表达式中

  • .点代表除换行符之外的任何字符
  • .{x}表示长度为 x 的任何字符的序列喜欢 .{3}可以匹配AbZ1X9 ,
  • 括号内的正则表达式 (...)将创建组,每个组都有其唯一的编号。该号码稍后可以使用,例如 replacement字符串通过$x哪里x是组数
  • 所以(.{5})D(.{24})D(.{19})将匹配任意 5 个字符(并将它们存储在组 1 中),然后 D然后 24 个字符(并创建将它们存储在组 2 中)然后 D最后是任意 19 个字符(并将它们存储在第 3 组中)
  • 替换"$1C$2C$3"我将使用第一组中匹配的字符串,然后代替 DC然后将包含第 2 组的匹配,然后再次代替 DC然后包括匹配的最后部分(第二个 D 后的最后 19 个字符存储在第 3 组中)
  • 还要确保从字符串开头开始每 50 个字符才能进行匹配,我将添加 \\G表示字符串或先前匹配项的开头(因此先前匹配项和当前匹配项之间不能有任何字符)。

关于java - 替换多个索引中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19231016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com