什么是保证以下的最佳方式:字符串操作(确保字符串总是以完全相同“//”前面)
我想确保某些字符串将永远“//“
之前。即恰好两个向前的斜线。
准则,对输入字符串:
- 它可以在串内包含其他斜线; (例如
photos/comments
); - 它在开始时可能已经包含0-n个其他斜杠(例如
///photos
,/photos
,photos
,//photos
等)。
编辑
顺便说一句:如果字符串格式不正确,我想解决,它使它。
什么是保证以下的最佳方式:字符串操作(确保字符串总是以完全相同“//”前面)
我想确保某些字符串将永远“//“
之前。即恰好两个向前的斜线。
准则,对输入字符串:
photos/comments
);///photos
,/photos
,photos
,//photos
等)。编辑
顺便说一句:如果字符串格式不正确,我想解决,它使它。
您可以用"//"
替换正则表达式"^/*"
:
str = str.replaceFirst("^/*", "//");
这将删除所有领先的正斜杠(如果有的话),并在该字符串的开头插入恰好两条斜线。它不会触及任何不在字符串开头的现有斜杠。
这是迄今为止最可读和最安全的答案 – brandstaetter 2012-02-23 15:43:24
String yourString="something";
yourString = !yourString.startsWith("//")?"//"+yourString:"";
字符串= “//” + string.replaceFirst( “^/*”,“ “);
没有缓慢的正则表达式+最小的内存/娱乐开销。
public String fix(String str) {
int n = 0;
while(n < str.length() && str.charAt(n) == '/') { ++n; }
switch (n) {
case 0: return "//" + str;
case 1: return "/" + str;
case 2: return str;
default: return str.substring(n - 2);
}
}
你想用它来处理“/// photos”的例子吗? – 2012-02-23 15:40:41
只是出于好奇,这是为了防止目录/路径遍历攻击? https://www.owasp.org/index.php/Path_Traversal如果是这样,OWASP有一个指导,以防止这种攻击...... – David 2012-02-23 15:42:02
你可以concat'//像这样''“//”+ myString' – Jayy 2012-02-23 15:42:33