import java.util.StringTokenizer;
class MySplit
{
public static void main(String S[])
{
String settings = "12312$12121";
StringTokenizer splitedArray = new StringTokenizer(settings,"$");
String splitedArray1[] = settings.split("$");
System.out.println(splitedArray1[0]);
while(splitedArray.hasMoreElements())
System.out.println(splitedArray.nextToken().toString());
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,如果我使用分裂字符串$,那么它不能正常工作,如果我与其他符号分裂,那么它工作正常.
为什么要这样,如果它仅支持正则表达式,那么为什么它的做工精细:,,,;等符号.
$在正则表达式中有一个特殊的含义,并且由于String#split将正则表达式作为参数,因此$不会将其解释为字符串"$",而是作为特殊的元字符 $.一个性感的解决方案:
settings.split(Pattern.quote("$"))
Run Code Online (Sandbox Code Playgroud)
返回指定String的文字模式String.
...另一个解决方案是逃避$,添加\\:
settings.split("\\$")
Run Code Online (Sandbox Code Playgroud)
重要说明:检查实际上是否在结果数组中有元素是非常重要的.
如果你这样做splitedArray1[0],你可以得到ArrayIndexOutOfBoundsException没有$符号.我想补充一下:
if (splitedArray1.length == 0) {
// return or do whatever you want
// except accessing the array
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
382 次 |
| 最近记录: |