簡體   English   中英

從java中的字符串中刪除字符

[英]Removing characters from string in java

刪除單引號之間的字符。 我正在嘗試這個。

如果我輸入sa' or '1'='1則輸出應為' or ' '=' 我正在研究sql注入項目。 他們需要的是從單引號中刪除字符。

通過使用預備語句,我們可以防止注入。 但在此之前,我想刪除單引號之間的字符。 這個怎么做。 有沒有簡單的方法。

StringBuilder strBuilder = new StringBuilder();
String [] ary = uname.split("");
int j = 1;
for (int i = 0 ; i < ary.length ; i++) {
    if (ary[i].equals("'")) {
        if (j == 1) {
            strBuilder = new StringBuilder();
            strBuilder.append(ary[i]);
            j++;
        }
        else if (j % 2 == 0) {
            strBuilder.append(ary[i]);
            j++;
        }
        else if (j % 3 == 0) {
            strBuilder.append(ary[i]);
        }
        else if (j % 4 == 0) {
            strBuilder.append(ary[i]);
            break;
        }
    }
    else {
        strBuilder.append(ary[i]);
    }
}
uname = strBuilder.toString();
System.out.println("uname: " + uname);

你可以做這樣的事情,在循環中的字符串中逐個讀取每個char ,並檢查該字符是否為'如果是,那么繼續刪除字符串中的以下字符,直到'字符再次出現...

偽代碼將是這樣的:

char string(10)="Da`ks`H"
for(int x=0, x<string_length, x++){
    if(string[x]=='){
        while(string[x]!='){
            delete
        }
    }
}

如果你想知道如何刪除,那么你可以做一件事:創建一個新的字符串,如果字符不在'之間,那就是字符副本'所以在這種情況下它會是這樣的:

char string(10)="Da`ks`H"
char newstring(10)
for(int x=0, x<string_length, x++){
    if(string[x]=='){
        while(string[x]!='){
            delete
        }
    }
    else{
        string[x]=newstring[x]
    }
}

注意:上面(^)我沒有顯示實際代碼,但它只是讓你理解邏輯,語法不屬於任何語言

不太清楚你在使用代碼做什么。 else if(j%4==0)阻塞,代碼永遠不會輸入else if(j%4==0)因為如果這個條件為真,那么else if(j%2==0)顯然是真的。

如果您只想跳過單引號之間的字符,請使用布爾標志。 在遇到索引時將其設置為true,並將其設置為false,然后遇到它。 消除兩者之間的字符。 重復此操作直到解析String。

我認為這是最好的方式,

public static String removeUntil(String str, String c, int st)
{
    StringBuilder sb = new StringBuilder(str);
    str = sb.reverse().toString();
    for(int i = 0;i<st;i++)
        str = str.substring(0,str.lastIndexOf(c));
    sb = new StringBuilder(str);
    str = sb.reverse().toString();
    return str;
}

對於前:

removeUntil("I.want.to.remove.this.string.until.third.dot", ".", 3)

然后它的結果=“remove.this.string.until.third.dot”;

這是從字符串中刪除特定字符的簡單實現。 時間復雜度為O(n + m)。

注意:這僅適用於ASCII字符。

String s = "Battle 123";
String remove = "e1";
System.out.println(removeCharacters(s,remove));


public static String removeCharacters(String sentence, String remove){
    if(sentence == null) return null;
    if(sentence != null && remove == null) return sentence;
    char[] s = sentence.toCharArray();
    char[] r = remove.toCharArray();
    int dest = 0;
    boolean[] asciiFlags = new boolean[128];        //False

    for(int i = 0;i < r.length; i++){
        asciiFlags[r[i]] = true;
    }

    for(int src =0;src<s.length;src++){
        if(!asciiFlags[s[src]]){
            s[dest++] = s[src];
        }   
    }
    return new String(s,0,dest);
}

暫無
暫無

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

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