昨天在調(diào)代碼的時(shí)候,遇到了一個(gè)很大的坑兒讨衣,讓我不得不記錄下來(lái)寝贡,莫非是我寫js代碼太久了的緣故扒披?大概也許可能吧...
好了,讓我們來(lái)看看這個(gè)坑兒吧圃泡,那就是字符串分割split
方法碟案。這個(gè)方法無(wú)論是在Java code還是在js code中都是有這個(gè)方法的,但是用法颇蜡,讓我很難過(guò)价说。誰(shuí)讓我只是半吊子后端呢?
js code
在js code 中可以這樣使用:
> var test = "11^34#223^[111*34567]^,56";
> test.split("^");
< ["11", "34#223", "[111*34567]", ",56"]
也就是說(shuō)风秤,直接想要分割什么鳖目,直接寫上就行。
Java code
在Java code 中如果也是直接這樣寫的話:
String[] signInfos = sign.split("^");
這樣做的結(jié)果是不能將字符串進(jìn)行分割的缤弦。結(jié)果如下圖:
未能分割
查找資料后领迈,得知,Java code 中的字符串分割之不能直接這樣寫的碍沐,必須添加轉(zhuǎn)義符- \\(兩個(gè)斜杠)狸捅。
多個(gè)符號(hào)進(jìn)行分割
- Java code
> String address="上海^上海市@閔行區(qū)#吳中路";
> String[]splitAddress=address.split("\\^|@|#");
< 上海上海市閔行區(qū)吳中路
- js code
> var test = "11^34#223^[111*34567]^,56";
// 一個(gè)字符 `#`
> test.split(/[#]/);
< ["11^34", "223^[111*34567]^,56"]
// 兩個(gè)字符 `*`、`#`
> test.split(/[*#]/);
< ["11^34", "223^[111", "34567]^,56"]
// 三個(gè)字符 `^`累提、`*`尘喝、`#`
// ^ 需要使用轉(zhuǎn)移符
> test.split(/[\^*#]/);
< ["11", "34", "223", "[111", "34567]", ",56"]
附加1
在這里稍微整理一下,Java code 中需要添加轉(zhuǎn)移符的分割的字符斋陪。
- |
- :
- .
- ^
然而像@或者朽褪,(逗號(hào))這樣的字符是不需要使用轉(zhuǎn)義符的。
附加2
js split 使用
- 定義和用法
split() 方法用于把一個(gè)字符串分割成字符串?dāng)?shù)組无虚。 - 語(yǔ)法
stringObject.split(separator,howmany) - 參數(shù) 描述
- separator 必需缔赠。字符串或正則表達(dá)式,從該參數(shù)指定的地方分割 stringObject友题。
- howmany 可選橡淑。該參數(shù)可指定返回的數(shù)組的最大長(zhǎng)度。如果設(shè)置了該參數(shù)咆爽,返回的子串不會(huì)多于這個(gè)參數(shù)指定的數(shù)組。如果沒(méi)有設(shè)置該參數(shù)置森,整個(gè)字符串都會(huì)被分割斗埂,不考慮它的長(zhǎng)度。