有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓中文本视图中的java过滤文本

有没有办法在安卓中从TextView中删除整数。例如,假设我们有这样的文本:

123Isuru456Ranasinghe

我希望这个文本在去掉整数后是这样的

IsuruRanasinghe

我如何在安卓中实现这一点


共 (2) 个答案

  1. # 1 楼答案

    这只是纯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

    现在你必须在“慢”和“短”之间做出选择,写得很快,但要复杂一点。一切都取决于你需要什么

  2. # 2 楼答案

    这对你有帮助

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

    返回带删除数字的字符串