0

TextViewAndroidから整数を削除する方法はありますか。たとえば、次のようなテキストがあるとします。

123Isuru456Ranasinghe

整数を削除した後、このテキストを次のようにしたい

IsuruRanasinghe

Androidでこれを達成するにはどうすればよいですか?

4

3 に答える 3

3

これはあなたを助けます。

  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]“, “”);

数字の削除で文字列を返します。

于 2012-04-27T08:56:35.127 に答える
3

これは純粋な 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

ここで、「遅い」か短く書くか、非常に速いが少し複雑かを選択する必要があります。すべては必要なものに依存します。

于 2012-04-27T09:03:40.130 に答える
1
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);
    }
}
于 2012-04-27T09:01:09.750 に答える