如果匹配则替换文本中的单词

时间:2013-04-02 06:42:53

标签: java android if-statement for-loop

我想接受所输入的单词并替换它 用“hi”这个词 我只是试图让它替换为单词 放。当我跑它时,它崩溃了。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    final EditText r=(EditText)findViewById(R.id.editText1);
    String t=r.getText().toString();
    String[] t1= t.split(" ");


    for(int i=0;i<=t1.length;i++)
    {
        if(t[i].equals("hi") )
        {
            TextView uu=(TextView)findViewById(R.id.textView2);
            uu.setText(t[i]);
        }
    }
}

7 个答案:

答案 0 :(得分:1)

只需将t [i]更改为t1 [i]

试试这个

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    final EditText r=(EditText)findViewById(R.id.editText1);
    String t=r.getText().toString();
    String[] t1= t.split(" ");


    for(int i=0;i<=t1.length;i++)
    {

       if(t1[i].equals("hi") )
      {
         TextView uu=(TextView)findViewById(R.id.textView2);
         uu.setText(t1[i]);
      }


    }

 }

答案 1 :(得分:1)

如果阻止,

替换 t1 [] 而不是 t []

试试这个:

if(t1[i].equals("hi") )代替if(t[i].equals("hi") )

答案 2 :(得分:0)

如果没有实际的错误,我们不能说太多,就是说,这段:

for(int i=0;i<=t1.length;i++)
{    
    if(t[i].equals("hi") )
    {
        TextView uu=(TextView)findViewById(R.id.textView2);
        uu.setText(t[i]);
    }
}

在Java中会产生ArrayOutOfBoundsException,数组基于0,最后一个可访问的数组位置为[arraySize] - 1

将其更改为:

for(int i=0;i<t1.length;i++)
{    
    if(t[i].equals("hi") )
    {
        TextView uu=(TextView)findViewById(R.id.textView2);
        uu.setText(t[i]);
    }
}

应该解决问题(至少对于这个特殊的例外)。

但是,这应该只对构成短语的字符进行迭代,因此它永远不应与hi匹配。在此处t[i]更改为t1[i]if(t1[i].equals("hi") ),可能在此处:uu.setText(t1[i]);应该会产生更好的解决方案。

正如一个FYI,使用有意义的名字永远不会伤害。

答案 3 :(得分:0)

为什么每次都要初始化

  

TextView uu =(TextView)findViewById(R.id.textView2);

将其保留在oncreate()中

答案 4 :(得分:0)

t[i].equals("hi")

比较对象。 用t1 [i] .tostring()==“Hi”

替换它

答案 5 :(得分:0)

我在你的代码中发现了一些错误。不需要拆分。我认为你的代码应该是

final EditText r=(EditText)findViewById(R.id.editText1);
TextView uu=(TextView)findViewById(R.id.textView2);
String t=r.getText().toString();
  if(t.contains("hi"))
    {
        // do your stuff
    }
  else{
   //false
  }

答案 6 :(得分:0)

你说你要用“hi”这个词替换输入的任何单词。但是你正在检查这个词(我认为不是t [i]你想说t1 [i])等于“hi”然后你想把它放在第二个textView中吗?您只需要在原始输入中获​​得“hi”的数量。如果您想将任何单词更改为“hi”,只需删除if测试,您将获得与您输入的单词一样多的“hi”。