2013-02-14 42 views
0

我试图在增量时用字符替换某些子字符串。例如,用增量字符替换子字符串

Input: Hello World 
Output: He...o Wor...d 

每当一个字符被发现,则增加要输出的字符的数量,我也应该这样做,没有任何阵列或的ArrayList。

我被困在如何解决这个问题,我意识到我需要一个变量来计算子字符串被发现的次数,但至于替换它,我不知道该怎么办。

此外,我不希望被授予代码,我宁愿自己做。

编辑:子字符串不一定是一个字符,它可以是多个字符。即。 “他”,“llo”等。

+0

你可以使用replaceAll和正则表达式吗? – assylias 2013-02-14 00:06:52

+0

是的,我可以。 /// – user123 2013-02-14 00:08:16

+1

然后它可能类似于'output = input.replaceAll(“l +”,“...”);' - 将每个l替换为...或者如果第一个l是。和第二.. ..等你可以使用'input.replaceFirst(“l”,points);'在一个循环,其中点的点+ =“。”;'在每次迭代 – assylias 2013-02-14 00:10:35

回答

1

看看StringBuffer。您可以使用它来设置给定索引的索引并在给定索引处插入一个字符串。然后你可以通过嵌套循环来完成。外循环while循环搜索您需要替换的字符串。 使用while (buffer.indexOf (target) >=0) 内部e循环插入counter个'。'

+0

对不起,我没有在OP中说过,我会在一分钟内编辑它。但是需要被替换的子字符串可以是多个字符,“l”,“ld”,“He”等。 所以我不认为我能够使用charAt或setCharAt。 – user123 2013-02-14 00:14:16

+0

查看更新的建议。 – Thorn 2013-02-14 00:41:40

0

使用变量来计算子字符串出现的次数(如您所说)。使用该变量作为循环的计数器以确定要打印多少个替换字符。

count = numberOfSubString() 

for 0 to count 
    replaceChar() 
0

你能用类似StringBuilder的东西吗?您可以遍历输入字符串的每个字符,并且如果它不需要被替换,则可以将其转换为StringBuilder。如果确实需要更换,则需要多次特殊字符(根据您提及的计数器)。然后在最后,将StringBuilder转换为String(使用.toString)并返回。

+0

我试图做这样的事情,但是我需要替换的字符存储为字符串,因为它们可以是任何字符组合。 我可能不清楚这一点,但我的意思是它可以是“l”,“ld”等需要替换的。 – user123 2013-02-14 00:13:14

+0

那么我可能会建议做一些类似于@assylias的建议,并使用正则表达式和'replaceAll()'方法。 – Steph 2013-02-14 00:16:32