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.****.net/androidbluetooth/article/details/6434049),可以知道空格的Ascii码知道,其值是0x20(32).