`
Eric.Yan
  • 浏览: 322829 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

split,replaceAll,

阅读更多

java.lang.String split

String的split方法是直接按照给定的字符串对字符串进行拆分,例如

java 代码

 

  1. String value = "a,b,c,d,e";
  2. String[] names = value.split(",");
  3. for(int i=0,n=names.length;i
  4. System.out.print(names[i]);
  5. }

 

运行结果:

a b c d e

但是在做ip解析时发现出了问题,代码如下:

java 代码

 

  1. String value = "209.242.1.1";
  2. String[] names = value.split(".");
  3. for(int i=0,n=names.length;i
  4. System.out.print(names[i]+" ");
  5. }

 

 

理想的输出结果应该是219 242 1 1,结果什么都没有输出。

很奇怪哦。看一下split的方法签名吧。

java 代码

 

  1. public String[] split(String regex)

 

 

这里的参数的名称是 regex ,也就是 Regular Expr<wbr>ession (正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式:</wbr>

java 代码

 

  1. public String[] split(String regex, int limit) {
  2. return Pattern.compile(regex).split(this, limit);
  3. }

 

split 的实现直接调用的 Matcher 类的 split 的方法。“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。

修改代码如下:

 

java 代码

 

  1. String value = "209.242.1.1";
  2. String[] names = value.split("\\.");
  3. for(int i=0,n=names.length;i
  4. System.out.print(names[i]+" ");
  5. }

 

 

Replace 方法

首先看看Replace方法的介绍

java 代码

 

  1. String java.lang.String.replace(char oldChar, char newChar)
  2. Returns a new string resulting from replacing all occurrences of oldChar in
  3. this string with newChar.
  4. If the character oldChar does not occur in the character sequence represented by
  5. this String object, then a reference to this String object is returned. Otherwise,

     

     

  6. a new String object is created that represents a character sequence identical to

     

     

  7. the character sequence represented by this String object, except that every

     

     

  8. occurrence of oldChar is replaced by an occurrence of newChar.
  9. Examples:
  10. "mesquite in your cellar".replace('e', 'o')
  11. returns "mosquito in your collar"
  12. "the war of baronets".replace('r', 'y')
  13. returns "the way of bayonets"
  14. "sparring with a purple porpoise".replace('p', 't')
  15. returns "starring with a turtle tortoise"
  16. "JonL".replace('q', 'x') returns "JonL" (no change)
  17. Parameters:
  18. oldChar the old character.
  19. newChar the new character.
  20. Returns:
  21. a string derived from this string by replacing every occurrence of oldChar with newChar.

 

用法 :

java 代码

 

  1. @Test
  2. public void testReplace(){
  3. String A = "aaa bCskd dkkAik kdaFe";
  4. System.out.println(A.replace('a', '_'));
  5. }

 

结果为:___ bCskd dkkAik kd_Fe

此方法用来替换char字符,对字符串不能处理

A.replace('aaa', '=') 是错误的

但是 A.replace(“aaa”, “=”)却是可以的

java 代码

 

  1. @Test
  2. public void testReplace(){
  3. String A = "aaa bCskd dkkAik kaaaFe";
  4. System.out.println(A.replace("aaa", "="));
  5. }

 

结果为:= bCskd dkkAik k=Fe

可见 replace("","")与方法replaceAll("","")拥有差不多的功能

仔细看看差别

java 代码

 

  1. String java.lang.String.replace(CharSequence target, CharSequence replacement)
  2. Replaces each substring of this string that matches the literal target sequence

     

     

  3. with the specified literal replacement sequence. The replacement proceeds from

     

     

  4. the beginning of the string to the end, for example, replacing "aa" with "b" in

     

     

  5. the string "aaa" will result in "ba" rather than "ab".
  6. Parameters:
  7. target The sequence of char values to be replaced
  8. replacement The replacement sequence of char values
  9. Returns:
  10. The resulting string
  11. Throws:
  12. NullPointerException if target or replacement is null.
  13. Since:
  14. 1.5

 

是1.5之后才有的功能哦

但是 replaceAll却更强大

java 代码

 

  1. @Test
  2. public void testReplace(){
  3. String A = "aaa bCskd dkkAik kaaaFe";
  4. System.out.println(A.replace(" ", ""));
  5. }

 

结果为aaabCskddkkAikkaaaFe

replaceAll可以将字符串内部的空格去掉

但是用replace(' ','')方法却不可以

replace(" ","")方法可以

另外一点

java 代码

 

  1. @Test
  2. public void testReplace(){
  3. String A = "aaa bCskd dkkAik kaaaFe";
  4. System.out.println(A.replaceAll("[a-z]", "="));
  5. }

 

结果为:=== =C=== ===A== ====F=

replaceAll可以用正则表达式,强大啊

我们看看replaceAll的用法

java 代码

 

  1. String java.lang.String.replaceAll(String regex, String replacement)
  2. Replaces each substring of this string that matches the given regular expression

     

     

  3. with the given replacement.
  4. An invocation of this method of the form str.replaceAll(regex, repl) yields exactly

     

     

  5. the same result as the expression
  6. java.util.regex.Pattern. compile(regex).java.util.regex.Pattern.matcher(java.lang.CharSequence) matcher(str). replaceAll(repl)
  7. See Also:
  8. java.util.regex.Pattern
  9. Parameters:
  10. regex the regular expression to which this string is to be matched
  11. Returns:
  12. The resulting String
  13. Throws:
  14. PatternSyntaxException if the regular expression's syntax is invalid
  15. Since:
  16. 1.4
  17. @spec
  18. JSR-51

参考:http://blog.163.com/zzcc_8/blog/static/1603547220101111147830/

 

 

  

Illegal group reference异常

 

String replaceAll(regex, replacement)函数 ,  由于第一个参数支持正则表达式,replacement中出现“$”,会按照$1$2的分组模式进行匹配,当编译器发现“$”后跟的不是整数的时候,就会抛出“非法的组引用”的异常。

 

分享到:
评论

相关推荐

    JS中实现replaceAll的方法(实例代码)

    为了实现一个兼容性更好的replaceAll方法,还可以采用其他一些方法,比如利用split和join方法来实现。split方法可以将原始字符串按照特定的分隔符进行拆分,返回一个数组,然后可以通过join方法将数组中的元素用新的...

    JavaScript中split与join函数的进阶用法技巧_.docx

    replaceAll 函数的实现方法是使用 split 函数把原始字符串分割成数组,然后使用 join 函数把数组元素连接起来。例如,"the man and the plan".replaceAll('the','a') 将生成字符串 "aman and a plan"。 另外一个...

    Java replaceAll()方法报错Illegal group reference的解决办法

    String[] strArr = re.split("\\$"); StringBuffer sb = new StringBuffer(); for (int i = 0; i ; i++) { sb.append(strArr[i]).append("{ZF4}"); } sb.append(strArr[strArr.length - 1]); re = sb....

    JavaScript中split与join函数的进阶使用技巧

    replaceAll可以使用split和join方法快速实现,例如: ```javascript String.prototype.replaceAll = function(find, replaceWith) { return this.split(find).join(replaceWith); }; ``` **occurrences函数** ...

    Java的 String 类常用方法大全

    Java 中的 String 类提供了三种方法来实现字符串的替换,分别是 replace、replaceAll 和 replaceFirst。 1. replace 方法 replace 方法将字符串中所有出现的 oldChar 字符串替换为 newChar 字符串。如: String ...

    js实战之全部替代一个子串为另一个子串.pdf

    另一种实现字符串替换的方法是使用String.prototype.split()方法将字符串分割成数组,然后使用Array.prototype.join()方法将数组连接成新的字符串。例如: `const s = 'hello. hello. hello.';` `s.split('hello. '...

    Flex 字符串ReplaceAll使用说明

    具体来说,我们可以利用String对象的split()方法将源字符串按照需要被替换的字符串分割成数组,然后使用数组的join()方法将分割后数组的元素重新组合成一个字符串,只不过此时替换掉了原有的模式字符串。该自定义...

    java 分割字符串

    `split()`方法经常与其他字符串处理方法一起使用,如`join()`(用于合并字符串数组)和`replaceAll()`(用于替换匹配正则表达式的部分)等,以完成更复杂的字符串操作。 ### 7. 性能考虑 对于非常大的字符串,`...

    删除字符串中的空格或将字符串的多个空格换位单个空格

    - `replaceAll("\\s+", " ")` 使用正则表达式匹配一个或多个连续空格,并替换为单个空格。 2. **使用`StringTokenizer`或`split()`**: - 先使用`split("\\s+")`按空格拆分字符串,然后用`join()`将非空元素重新...

    字符串截取相关处理!

    `split()` 用于分割字符串,`substring()` 和 `slice()` 用于截取字符串,`join()` 用于连接数组元素成字符串,`indexOf()` 用于查找子字符串的位置,以及 `ReplaceAll()` 函数用于替换所有匹配项。这些方法在实际...

    JAVA常用API文档

    本文档对JAVA常用API文档进行了详细的介绍,涵盖了String、Mathches、Split、ReplaceAll、Object和Point等方面的知识点。了解这些API文档对于程序员来说是非常重要的,有助于提高编程效率和代码质量。

    StringUtils:该库在 std 中实现了许多常用但本机不支持的功能

    字符串实用程序该库在std::string 中实现了许多常用但本机不支持的函数,如Split 、 Join 、 Trim 、 Compact 、 ReplaceAll 、 ToLower 、 ToUpper 、 Repeat 、 ReadFile 、 WriteFile等。测试make test Passing: ...

    String字符串相关api.zip

    这个压缩包中的文件分别对应了`String`类的一些重要API用法,包括`split()`, `substring()`, `replaceAll()`, `trim()`, `StringBuilder`, `charAt()`, `indexOf()`, 和 `valueOf()`。以下是对这些API的详细解释: ...

    学习Java正则表达式(匹配、替换、查找)

    最后,切割(split)字符串常用 `split()` 方法,它根据给定的正则表达式将字符串分割成多个部分。在 `strSplit()` 方法中,我们使用 `str.split("\\.")` 将字符串按"."分隔,生成一个字符串数组。 总结起来,Java...

    正则表达式及其应用.rar

    在RegexStringReplaceFirstAndSplit.java文件中,可能包含了使用`Matcher.replaceAll()`方法进行全局替换和`split()`方法进行字符串分割的例子。`replaceAll()`方法将字符串中所有匹配正则表达式的部分替换为指定的...

    Java正则表达式规则(技术文档)

    String类提供了几个用于正则表达式的方法,如`matches()`, `split()`, `replaceAll()`和`replaceFirst()`等。`matches()`方法用于检查字符串是否与正则表达式匹配,例如`"123".matches("\\d+")`会返回`true`。`split...

    正则表达式实例介绍

    - 解析:先使用`replaceAll("\\.+","")`去除句中的点号,再使用`replaceAll("(.)\\1+","$1")`去除重复字符。 ```java String str = "我我..我我.我我.要要要..学学学..学学.编编..程程程"; str = str.replaceAll...

    JAVA正则表达式 Pattern和Matcher

    除了`split()`方法,`Matcher`还提供了一些其他有用的方法,比如`replaceAll(String replacement)`用于替换所有匹配的子字符串,`replaceFirst(String replacement)`仅替换第一个匹配的子字符串,以及`groupCount()`...

Global site tag (gtag.js) - Google Analytics