[英]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.