如何使用replaceAll()更正确

时间:2012-09-24 19:32:09

标签: android textview replaceall

我有一个刽子手应用程序,我从我创建的Db中获取一个随机单词,然后我将其保存到randomedWord然后我创建另一个字符串来保存randomedWord但仅替换为“_” 。显示此hiddenWord,以便用户知道有多少个字符。

当用户点击输入onlicklistener触发guess()方法时:

我有以下代码,它启动一个值为TextView(userInput)的本地String。然后,如果randomedWord包含我想要猜测的猜测到与randomedWord中相同的位置,但现在包含hiddenWord,然后再次更新TextView

猜猜方法:

public void guess() 
{
    String guess = userInput.getText().toString();

    if(randomedWord.contains(guess)) 
    {
        hiddenWord = hiddenWord.replaceAll(guess, guess);
        this.wordHolder.setText(hiddenWord);
    } else 
    {
        showImages();
    }
}

我认为问题在于这一行:

hiddenWord = hiddenWord.replaceAll(guess, guess);

因为hiddenWord只包含“_”,因此我无法替换为(guess,guess),其中第一个是要替换的,最后是WITHWHAT。

如何使用randomedWord中的猜测替换hiddenWord中相同的位置?

2 个答案:

答案 0 :(得分:0)

我会略微改变你的做法。当用户输入并调用guess()时,在randomedWord中查找该猜测的所有出现,然后将hiddenWord中的字符设置为猜测。使用StringBuilderString.indexOf(),它看起来像这样。此外,猜测需要是char

StringBuilder builder = new StringBuilder(hiddenWord);
int index = word.indexOf(guess);
while (index >= 0) {
    builder.setCharAt(index, guess);
    index = word.indexOf(guess, index + 1);
}
hiddenWord = builder.toString();

答案 1 :(得分:0)

全部解决了!一切顺利的感觉.... :)

下面是代码:

//将侦听器设置为输入按钮,并在textfield不为空时进行猜测,如果是

则输入需要的吐司
 enterLetterButton.setOnClickListener(new OnClickListener(){
            public void onClick(View arg0) {

                if (!(userInput.getText().toString().isEmpty()) )
                {
                    guess();
                } else if (userInput.getText().toString().isEmpty())
                {
                    Toast toast = Toast.makeText(getApplicationContext(), "You need to insert a letter", Toast.LENGTH_SHORT);
                    toast.show();
                }
            }
        });

// invWord()方法。将randomedWord转换为字符串“_”。

public void invWord() 
    {
        hiddenWord = randomedWord;
        hiddenWord = hiddenWord.replaceAll(".", "_" +" ");
    }

// guess()方法。将guess(char)置于获取的索引处,如果hiddenWord不再包含“_”,则调用wins()

  public void guess() throws IndexOutOfBoundsException
        {
            char guess = userInput.getText().charAt(0);
            StringBuilder builder = new StringBuilder(hiddenWord);
            String j = ""+guess;
            int index = randomedWord.indexOf(guess);

            if (randomedWord.contains(j))
            {
                while (index >= 0) 
                {
                    builder.setCharAt(index*2, guess);
                    index = randomedWord.indexOf(guess, index + 1);
                    hiddenWord = builder.toString().trim();
                    wordHolder.setText(hiddenWord);
                    if (!(hiddenWord.toString().contains("_".toString())) )
                    {
                        winner();
                    }
                }   
            }
            else 
            {
                showImages();
            }
        }