[英]“\\\\”.replaceAll(“\\\\”, “\\”) throws java.lang.StringIndexOutOfBoundsException
[英]ReplaceAll java throws exception
為什么這段代碼會引發異常?
file = file.replaceAll(Pattern.quote("/"),File.separator);
Message: String index out of range: 1 File: null Class: java.lang.String Methode: charAt Line: -1 File: null Class: java.util.regex.Matcher Methode: appendReplacement Line: -1 File: null Class: java.util.regex.Matcher Methode: replaceAll Line: -1 File: null Class: java.lang.String Methode: replaceAll Line: -1
在某種程度上, replaceAll
的第二個參數也是一個模式。 特別地,反斜杠具有特殊含義。 但是,您不只是想使用Pattern.quote
,因為它將引用更多的內容。 您要使用Matcher.quoteReplacement
:
file = file.replaceAll(Pattern.quote("/"),
Matcher.quoteReplacement(File.separator));
或者-更簡單地說-根本不使用正則表達式:
file = file.replace("/", File.separator);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.