如何替换指定索引处的字符?
我尝试了以下方式,但字符串长度会有所不同,因此我的代码失败了。
StringBuilder s =new StringBuilder("{1:Gxxxxxxxxxxx000000000Y}{2:YYYYYYY}");
s.setCharAt(pos+24, '1');
结果:{1:Gxxxxxxxxxxx0000000001} {2:YYYYYYY}(正确的结果)
但是上面的代码在下面的字符串中失败了,它没有给出异常。它正在给出inccorect结果。 :
StringBuilder s =new StringBuilder("{1:GxxxxxxxxxxxYYY000000000Y}{2:YYYYYYY}");
结果:{1:GxxxxxxxxxxxYYY000000100Y} {2:YYYYYYY}(不正确)
预期:{1:GxxxxxxxxxxxYYY0000000001} {2:YYYYYYY}
我知道如果我使用pos+27
它可行,但我需要一个正确的方法来做,因为字符串可能会有所不同。
此致
Chaitu
答案 0 :(得分:0)
这取决于您想要放置'1'
的正确描述。
例如,如果您要在第一个'}'
之前设置字符到'1'
,则可以使用indexOf()
来查找第一个'}'
的位置和然后从中减去一个以获得它之前的位置:
s.setCharAt(s.indexOf('}') - 1, '1');
修改
假设您想要找到第一个}
之后的第一个{1:
,请点击此处:
(a)您首先需要找到起点,在您的情况下,indexOf("{1:")
(b)然后你需要找到之后的第一个}
。为此,您可以使用indexOf()
的另一个变体,它将索引作为参数开始。换句话说,我们从(a)中取出索引并将其用作起点:s.indexOf("}", s.indexOf("{1:"))
归结为:
s.setCharAt(s.indexOf("}", s.indexOf("{1:")) - 1, '1');
答案 1 :(得分:0)
您是否总是更换字符串的相同部分,即使长度可能会有所不同?即如果它始终位于1{...Y}
末尾,那么请使用类似s.indexOf( "Y}" )
的内容来为您提供需要替换的角色位置。显然,这假设在你想要的那个之前没有其他的字符串实例。