什麼是保證以下的最佳方式:字符串操作(確保字符串總是以完全相同「//」前面)
我想確保某些字符串將永遠「//「
之前。即恰好兩個向前的斜線。
準則,對輸入字符串:
- 它可以在串內包含其他斜線; (例如
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