Работа со строками

Ответить
Аватара пользователя
MeTeOpA
Сообщения: 85
Зарегистрирован: 07 мар 2012, 12:50

Работа со строками

Сообщение MeTeOpA » 31 мар 2012, 21:15

Пытаюсь сделать такую программу, в EditText вводим строку. По нажатию на button1 необходимо разобрать строку на слова.
вот код

Код: Выделить всё

package ua.m.develop;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity implements OnClickListener{
    /** Called when the activity is first created. */
    Button btnFind;
    EditText Ed;
    Editable str;
 	
class Strings{
	String str;
		
	}
Strings[] Arr=new Strings[10];
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnFind = (Button)findViewById(R.id.button1);
        Ed = (EditText)findViewById(R.id.editText1);
        btnFind.setOnClickListener(this);
   
      }
	
	 public void onClick(View v){
		 try
		 {
	     // по id определеяем кнопку, вызвавшую этот обработчик
	     switch (v.getId()) 
	     {
	     	case R.id.button1:
	     	{
	    	 String source = Ed.getText().toString();
	    	 int p=-1;
	    	 int i=0,j;
	    	 StringBuffer buf = new StringBuffer(source);
	    	 while((p=buf.toString().indexOf("w"))>=0)
	    	 {
	    		 Arr[i].str=buf.substring(0,p)	;
	    		 buf.delete(0, p);
	    		 i++;
	    	 }
	    	for(j=0;j<Arr.length;j++)
	    	 {
	    		 btnFind.setText(btnFind.getText().toString()+" "+Arr[j].str);
	    	 }
	       break;
	     	}
	       	}
		 }
		 catch(Exception e)
		 {
			 btnFind.setText("Ошибка :"+e.getMessage());
			
			 
		 }
	 }
}
Код файла R.

Код: Выделить всё

/* AUTO-GENERATED FILE.  DO NOT MODIFY.
 *
 * This class was automatically generated by the
 * aapt tool from the resource data it found.  It
 * should not be modified by hand.
 */

package ua.m.develop;

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int ic_launcher=0x7f020000;
    }
    public static final class id {
        public static final int button1=0x7f050001;
        public static final int editText1=0x7f050000;
    }
    public static final class layout {
        public static final int main=0x7f030000;
    }
    public static final class string {
        public static final int app_name=0x7f040001;
        public static final int hello=0x7f040000;
    }
}
main.xml

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Введите запрос :" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >

        <requestFocus />
    </EditText


    <Button
        android:id="@+id/button1"
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="Найти!" >
</Button>

</LinearLayout>
Но выбивает ошибку и не хочет считать. Говорит, мол массив Arr пустой. Хотя в коде я его заполняю.

Аватара пользователя
MeTeOpA
Сообщения: 85
Зарегистрирован: 07 мар 2012, 12:50

Re: Работа со строками

Сообщение MeTeOpA » 31 мар 2012, 21:15

Помогите плиз.

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Re: Работа со строками

Сообщение andev » 31 мар 2012, 22:37

Не совсем понял что вам надо, но если просто разбить входную строку на составляющие, поможет обычный split
Единственное - ввести предобработку удаления лидирующих, оконечных и двойных пробелов

Код: Выделить всё

package ru.test.SplitString;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class SplitStringActivity extends Activity implements OnClickListener {
    
	Button btnFind;
    EditText Ed;
	
	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        btnFind = (Button)findViewById(R.id.button1);
        Ed = (EditText)findViewById(R.id.editText1);
        
        btnFind.setOnClickListener(this);
    }

    String[] Arr;
    
	@Override
	public void onClick(View v) {
		try
		{
			switch (v.getId())
			{
				case R.id.button1: {
					String text = Ed.getText().toString();
					Arr = text.split(" ");
				}
				break;
				}
			}
		catch(Exception e) {
			btnFind.setText("Ошибка :"+e.getMessage());
			}
	}
}

Ответить