TextView
Androidから整数を削除する方法はありますか。たとえば、次のようなテキストがあるとします。
123Isuru456Ranasinghe
整数を削除した後、このテキストを次のようにしたい
IsuruRanasinghe
Androidでこれを達成するにはどうすればよいですか?
これはあなたを助けます。
public static String removeDigits(String text) {
int length = text.length();
StringBuffer buffer = new StringBuffer(length);
for(int i = 0; i < length; i++) {
char ch = text.charAt(i);
if (!Character.isDigit(ch)) {
buffer.append(ch);
}
}
return buffer.toString();
}
別の簡単なオプション:
// do it in just one line of code
String num = text.replaceAll(”[\\d]“, “”);
数字の削除で文字列を返します。
これは純粋な Java です。アンドロイドとは関係ありません。
これがあなたが望むことをするためのコードです。
String str = "123Isuru456Ranasinghe";
String newStr = str.replaceAll("[0-9]", "");
いくつかのテストの後、パフォーマンスの問題では、最長のソリューションが最良のようです。
public static void main(String[] arg) throws IOException {
// Building a long string...
StringBuilder str = new StringBuilder();
for (int i = 0; i < 1000000; i++)
str.append("123Isuru456Ranasinghe");
removeNum1(str.toString());
removeNum2(str.toString());
}
// With a replaceAll => 1743 ms
private static void removeNum1(String _str) {
long start = System.currentTimeMillis();
String finalString = _str.replaceAll("[0-9]", "");
System.out.println(System.currentTimeMillis() - start);
}
// With StringBuilder and loop => 348 ms
private static void removeNum2(String _str) {
long start = System.currentTimeMillis();
StringBuilder finalString = new StringBuilder();
char currentChar;
for (int i = 0; i < _str.length(); ++i) {
currentChar = _str.charAt(i);
if (Character.isLetter(currentChar)) {
finalString.append(currentChar);
}
}
System.out.println(System.currentTimeMillis() - start);
}
ループを使用すると、はるかに高速になります。しかし、あなたの場合、それは少し役に立たない:p
ここで、「遅い」か短く書くか、非常に速いが少し複雑かを選択する必要があります。すべては必要なものに依存します。
StringBuilder ans = new StringBuilder();
char currentChar;
for (int i = 0; i < str.length(); ++i) {
currentChar = str.charAt(i);
if (Character.isLetter(currentChar)) {
ans.append(currentChar);
}
}