`
happinessmoon
  • 浏览: 75697 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 中 split() 一点经验

阅读更多

特别注意的是:如果使用“\”分割,则需要使用“\\\\”来分割!

 

在java.lang包中有String.split()方法,返回是一个数组
我在应用中用到一些,给大家总结一下,仅供大家参考:
1、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
2、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
“.”和“|”都是转义字符,必须得加"\\";
3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or");
使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。

我们看jdk doc中说明

 

public String[] split(String regex)

 

 Splits this string around matches of the given regular expression. 

 

参数regex是一个 regular-expression的匹配模式而不是一个简单的String,他对一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码:

用竖线 | 分隔字符串,你将得不到预期的结果

    String[] aa = "aaa|bbb|ccc".split("|");
    //String[] aa = "aaa|bbb|ccc".split("\\|"); 这样才能得到正确的结果

    for (int i = 0 ; i <aa.length ; i++ ) {
      System.out.println("--"+aa[i]);
    }

用竖 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。

    String[] aa = "aaa*bbb*ccc".split("*");
    //String[] aa = "aaa|bbb|ccc".split("\\*"); 这样才能得到正确的结果   

    for (int i = 0 ; i <aa.length ; i++ ) {
      System.out.println("--"+aa[i]);
    }

显然,+ * 不是有效的模式匹配规则表达式,用"\\*" "\\+"转义后即可得到正确的结果。

"|" 分隔串时虽然能够执行,但是却不是预期的目的,"\\|"转义后即可得到正确的结果。

还有如果想在串中使用"\"字符,则也需要转义.首先要表达"aaaa\bbbb"这个串就应该用"aaaa\\bbbb",如果要分隔就应该这样才能得到正确结果:

String[] aa = "aaa\\bbb\\bccc".split("\\\\");

转自:http://hi.baidu.com/danghj/blog/item/7259c2b461bebc708bd4b21e.html

分享到:
评论

相关推荐

    Java中常用的各种技能

    在 Java 中,可以使用 `String` 类的 `join()` 方法将数组中的元素组合成字符串,但是 Java 中没有内置的方法可以直接实现这一点。 5. Java 中的命名规范 在 Java 中,方法名通常使用小写字母开头,而类名使用大写...

    js java 判断中文,英文的混合长度

    根据给定文件的信息,本文将围绕“JS与Java中判断字符串中文、英文混合长度的方法”这一主题进行深入探讨。文章将分别介绍JavaScript和Java中如何处理包含中文字符和英文字符的混合字符串,并计算其等效长度。 ### ...

    java把文本文件内容导入到数据库

    在Java中,我们可以使用`BufferedReader`或`Scanner`类来读取文件内容,然后通过`split()`方法根据分隔符拆分每一行,得到一个字段数组。 例如: ```java BufferedReader reader = new BufferedReader(new ...

    (2020最新)Java面试题.pdf

    面试中,Java问题涵盖了从基础知识到框架、中间件、数据库等方面。下面是对Java面试题的知识点总结: Java基础 1. JDK和JRE的区别:JDK(Java Development Kit)是Java开发工具包,包括JRE和开发工具,而JRE(Java...

    简易计算器JAVA源代码

    为了实现这一点,你需要了解Java的Scanner类用于获取用户输入,以及String类的split()方法用于解析输入的字符串。 最后,我们注意到标签中提到"Calculator",这可能意味着源代码中定义了一个名为Calculator的类。这...

    Java进阶路线

    在Java中,基本类型(如int、char等)的传递是按值传递的,而对象类型的传递则是按引用传递的。理解这一点对于正确处理变量和对象之间的交互至关重要。 **2. hashCode & equals** `hashCode()` 和 `equals()` 方法...

    java练习程序集合类

    Java集合类中的ArrayList或LinkedList可以很方便地实现这一点。这里我们选择ArrayList,因为它的插入和访问速度较快。 ```java import java.util.ArrayList; import java.util.Collections; ArrayList&lt;Integer&gt; ...

    java笔试算法题及答案.doc

    Java笔试中的算法题通常涉及到数据结构、排序、字符串处理等方面的知识。以下是对两道题目及其解题思路的详细解析: 1. **升序与降序排序数组** 这道题目要求对输入的以逗号分隔的数字进行排序。首先,我们可以...

    Java常见面试题.docx

    在面试中,Java的基础知识和新特性通常是考察的重点。以下是一些关于Java的常见面试知识点: 1. **Java三大特性** - **抽象**:抽象是类设计的核心,它将类的公共特性提取出来,形成独立的抽象类,不关注实现细节...

    2013蓝桥杯java本科B组预赛第七题答案

    题目描述中的“内存”和“CPU”就明确指出了这一点。这意味着在编写代码时,除了考虑功能的正确性,还需关注算法的时间复杂度和空间复杂度,确保程序能在给定资源限制下高效运行。这要求参赛者具备良好的算法优化...

    Java面试宝典2013_PDF版

    1. **Java文件中类的定义**:一个`.java`源文件中可以定义多个类,但只能有一个公共类(使用`public`修饰符的类),并且公共类的名称必须与文件名相同。如果类不是`public`,则文件名可以是任意类的名称。 2. **...

    java-leetcode题解之第165题比较版本号.zip

    在这个题解压缩包中,我们很可能会找到一个或多个Java解决方案,详细解释了如何比较两个版本号。 首先,让我们来理解一下版本号的构成。版本号通常由主版本、次版本和修订版组成,例如1.2.3。每个部分可以是整数,...

    StringUtils的各项用法

    在Java编程中,处理字符串是常见的任务,Apache Commons Lang库中的StringUtils类提供了丰富的字符串操作方法,极大地提高了开发效率。本文将深入探讨StringUtils的几个重要功能,包括空字符串检查、清除空白字符、...

    现在有一个字符串“90,56,45,38,79,85”,按照从小到大排序——字符串排序

    Java的`Integer.parseInt()`方法可以实现这一点: ```java int[] numbers = new int[numbersStr.length]; for (int i = 0; i ; i++) { numbers[i] = Integer.parseInt(numbersStr[i]); } ``` 现在我们有了一个...

    0字符串知识点.pdf

    在Java语言中,字符串的处理和操作尤为关键,因为Java语言为字符串类型提供了丰富的API来满足开发者的不同需求。 接下来,我们将基于给定文件的部分内容,详细探讨Java中字符串处理的知识点: 1. 字符串基础概念:...

    java-project:通过关键字搜索建议

    Java的`String`类提供了丰富的API,如`indexOf()`、`contains()`和`split()`。正则表达式(`Pattern`和`Matcher`类)可以帮助我们实现复杂的匹配逻辑。 多线程可能在处理大量数据时变得必要,以利用多核处理器的...

    TXT文本文件数据添加修改例程

    这可能涉及字符串处理函数,例如在Python中使用`split()`分隔字符串,或者在Java中使用`substring()`和`replace()`等方法。处理后的数据可能需要存储在数组、列表、集合或自定义数据结构中,以便进一步操作。 3. **...

    一点平常工作下积累的小知识点

    `new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime())` 在Java中用于格式化当前时间,得到年月日时分秒的字符串表示。 7. **jQuery表单提交**: `$("#formid").submit();` ...

    GWT开发者手册_v2

    - **正则表达式**:Java 正则表达式的语法与 JavaScript 相似但也有区别,某些方法如 `replaceAll` 和 `split` 在转换后的 JavaScript 中可能表现不同。 - **序列化**:由于动态类装载和反射在编译后的 JavaScript ...

Global site tag (gtag.js) - Google Analytics