簡體   English   中英

Java 1.3 String.replaceAll(),替換

[英]Java 1.3 String.replaceAll() , replacement

我正在使用一些非常古老的Java. 1.3 Java. 1.3確切地說。

我試圖通過刪除非字母字符(標點符號和數字等)來清理一些String輸入

通常我會做類似的事情:

String.replaceAll("[^A-Za-z]", "");

但是, .replaceAll()是在Java 1.4中引入的! 所以它不會編譯! http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceAll(java.lang.String,java.lang.String)

我們是如何在Java 1.4之前完成此任務的?

好吧,你可以寫一個像這樣的簡單循環:

char[] origArr = str.toCharArray();
char[] destArr = new char[origArr.length];
int j = 0;
for (int i=0; i < origArr.length; i++) {
    char c = origArr[i];
    if ((c >= 65 && c <= 90) || (c >= 97 && c <= 122))
       destArr[j++] = c;
}

String dest = new String(destArr, 0, j);

抱歉沒有JDK1.3來測試它。

看看這是否有效:

public static String replaceAll(
    String haystack,              // String to search in
    String needle,                // Substring to find
    String replacement) {         // Substring to replace with

    int i = haystack.lastIndexOf( needle );
    if ( i != -1 ) {
        StringBuffer buffer = new StringBuffer( haystack );
        buffer.replace( i, i+needle.length(), replacement );
        while( (i=haystack.lastIndexOf(needle, i-1)) != -1 ) {
            buffer.replace( i, i+needle.length(), replacement );
        }
        haystack = buffer.toString();
    }

    return haystack;
}

編輯:這不支持正則表達式。 當你想要擦除的不只是一個字符時,我建議你調整這個代碼以允許一組needles或(丑陋的方法)循環不允許的字符並重復調用該函數。

您可以使用Apache Software Foundation的jakarta

Jakarta Regexp是一個100%純Java正則表達式包

它沒有維護,但最后一個版本不是那么老(2011)。

文檔: http//jakarta.apache.org/regexp/

對於replaceAll,您可以使用帶有REPLACE_ALL標志的subst

PS:鏈接已經死了, 這里有一個下載lib的鏡像

假設你只需要字母表和其他任何東西替換為空白。 人物也得到了數字方法。 如果有幫助,請參閱http://docs.oracle.com/javase/1.3/docs/api/java/lang/Character.html

public static void main (String[] args)
{


String yourstring = "2323ABF!@CD24";
char[] check = yourstring.toCharArray();
StringBuffer str = new StringBuffer();
for(int i=0; i < check.length; i++){
    if(!Character.isLetter(check[i])){
       str.append("");
    }
    else{
        str.append(check[i]);
    }
}
System.out.println(str.toString());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM