我想完成一个可以获取文本文件并缩小尺寸的程序。到目前为止,它取代了所有双字符出现,现在我想用“1”替换“ou”。
我尝试过使用if语句,但似乎效果不佳。
我的方法如下:
public String compressIt (String input)
{
int length = input.length(); // length of input
int ix = 0; // actual index in input
char c; // actual read character
int cCounter; // occurrence counter of actual character
String ou = "ou";
StringBuilder output = // the output
new StringBuilder(length);
// loop over every character in input
while(ix < length)
{
// read character at actual index then increments the index
c = input.charAt(ix++);
// we count one occurrence of this character here
cCounter = 1;
// while not reached end of line and next character
// is the same as previously read
while(ix < length && input.charAt(ix) == c)
{
// inc index means skip this character
ix++;
// and inc character occurence counter
cCounter++;
}
if (input.charAt(ix) == 'o' && input.charAt(++ix) == 'u' && ix < length - 1)
{
output.append("1");
}
// if more than one character occurence is counted
if(cCounter > 1)
{
// print the character count
output.append(cCounter);
}
// print the actual character
output.append(c);
}
// return the full compressed output
return output.toString();
}
这是我所指的这些代码行。
if (input.charAt(ix) == 'o' && input.charAt(ix + 1) == 'u')
{
output.append("1");
}
我想做什么:替换字符。我有一个包含“爱丽丝梦游仙境”的文本文件。当我循环遍历所有字符时,会看到“o”和“u”(如“你”),我想要替换字符,使其看起来像:“Y1”。
此致
答案 0 :(得分:1)
所以你最有可能尝试从ix = 0循环到字符串的长度。
首先我的猜测是你循环并包括string.length()。哪个不起作用,charAt是0索引aka &#34; ABC&#34;有一个charAt 0,1和2但不是3,它给出了你描述的错误。
您展示的所有行中的第二行使用input.charAt (ix++)
执行以下操作:获取位置ix(旧值)的char,然后将值ix更新为ix + 1,如果您希望ix为在周围的字母之前更新,你必须写input.charAt(++ix)
第三,有一个String.replace函数,input.replace(&#34; abc&#34;,&#34; def&#34;)对于简单的替换很有用,对于更复杂的替换,考虑使用正则表达式。
答案 1 :(得分:0)
这与charAt方法无关。您需要更改if条件才能运行它直到length-1。它在最后一种情况下失败了,因为它正在出阵。
for(int i=0; i<inputString.length() - 1; i++)
{
char temp = inputString.charAt(i);
char blah = inputString.charAt(i+1);
System.out.println("temp: "+ temp);
System.out.println("blah: "+ blah);
}
这对我有用!