慕運(yùn)維8079593
2019-03-15 15:15:03
我想分割一個(gè)字符串,如:C:\Program\files\images\flower.jpg但是,使用下面的代碼:String[] tokens = s.split("\\");
String image= tokens[4];有錯(cuò)誤:08-07 12:47:35.960: E/AndroidRuntime(6921): java.util.regex.PatternSyntaxException: Syntax error U_REGEX_BAD_ESCAPE_SEQUENCE near index 1如何實(shí)現(xiàn)???
4 回答

有只小跳蛙
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
string s = @"C:\Program\files\images\flower.jpg";
String[] tokens = s.Split('\\'); String image= tokens[4];
試一下

翻翻過(guò)去那場(chǎng)雪
TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
private static String s = "C:\\Program\\files\\images\\flower.jpg"; /** * @param args */ public static void main(String[] args) { String[] split = s.split("\\\\"); for(String ss: split) { System.out.println("s ="+ss); } }
\是一個(gè)轉(zhuǎn)義符,而“\”也是需要轉(zhuǎn)義的

慕尼黑5688855
TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
// 因?yàn)榉葱本€是正則表達(dá)式中的特殊字符,所以需要轉(zhuǎn)義。
// 那么,傳遞到正則表達(dá)式解析器的地方,就需要兩個(gè)反斜線(\)
// 而你的代碼屬于Java代碼,是屬于字面量的,所以編譯器在讀取源文件的時(shí)候會(huì)進(jìn)行一次轉(zhuǎn)義
// 所以需要4個(gè)反斜線.如果這兩個(gè)反斜線是從其他地方獲取的,那么可以只有兩個(gè)。
// 你也可以使用 System.out.println("\\\\");
測(cè)試一下輸出的結(jié)果,就是真正的值.
String[] tokens = s.split("\\\\");

BIG陽(yáng)
TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
應(yīng)該這么寫:
String[] tokens = "C:\\Program\\files\\images\\flower.jpg".split("\\\\"); String image = tokens[4];
添加回答
舉報(bào)
0/150
提交
取消