Algorithm_String: 字符串与EditText_01

虽然使用java来开发android的应用层,但是与Java的有些东西还是有所出入。

本篇博客结合android的EditText与String类的方法,希望能在开发中帮助到你。

这篇博客您可以了解到:

<1> 获取EditText的内容,去除该内容包含的所有空格。

<2> 获取EditText的内容,判断该内容是否包含中文

效果图:


实现代码:

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 EditTextAndString extends Activity {
	private static final char SPACE = 0x20;

	private EditText user = null;
	private EditText result = null;
	private Button button = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		user = (EditText) findViewById(R.id.user);
		result = (EditText) findViewById(R.id.result);
		button = (Button) findViewById(R.id.button);

		button.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				String name = user.getText().toString();
				
				String res = removeAllSpace(name);
				result.append("去除所有空格后:" + res + "\n");
				
				if (isChinese(name)) {
					// ToDo
				}
			}
		});
	}

	/**
	 * 该字符是否包含中文字符
	 * 
	 * @param c
	 *            字符
	 * @return 如果包含中文返回true,否则false
	 */
	public boolean isChinese(char c) {
		Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
		if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
				|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
				|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
				|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
				|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
				|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
			return true;
		}
		return false;
	}

	/**
	 * 该字符串是否包含中文字符
	 * 
	 * @param str
	 *            字符串
	 * @return 如果包含中文返回true,否则返回false
	 */
	public boolean isChinese(String str) {
		if ((str != null) && (!"".equals(str))) {
			char[] ch = str.toCharArray();
			int len = ch.length;
			for (int i = 0; i < len; i++) {
				// Log.d("mark", "<---> " + ch[i]);
				if (isChinese(ch[i])) {
					result.append("该字符串中第一个中文:" + ch[i] + "\n");
					return true;
				}
			}
		}
		return false;
	}

	/**
	 * 去除字符串中所有空格
	 * 
	 * @param s
	 *            字符串
	 * @return 字符串
	 * 
	 * 注意:String类的trim()只可以去除两端的空格
	 */
	public String removeAllSpace(String s) {
		String endString = "";
		StringBuilder builder = new StringBuilder(endString);
		int len = s.length();
		for (int i = 0; i <len ; i++) {
			// 获得字符
			char c = s.charAt(i);
			// 如果该字符不是空格
			if (c != SPACE) {
				builder.append(String.valueOf(c));
			}
		}
		return builder.toString();
	}
}
这里需要注意一个问题:

在Java的JDK中,表示空格在 java.awt.event.KeyEvent 类中有一个字段来表示:

public static final int VK_SPACE   = 0x20;

但是在android中没有专门这个字段,专门查看android的import android.view.KeyEvent 类,也有一个字段:

public static final int KEYCODE_SPACE  = 62;
但是他表示的不是字符的空格。通过查找Ascii码( http://blog.csdn.net/androidbluetooth/article/details/6434049),可以知道空格的Ascii码知道,其值是0x20(32).


©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页