java.lang.String split
String的split方法是直接按照给定的字符串对字符串进行拆分,例如
java 代码
- String value = "a,b,c,d,e";
- String[] names = value.split(",");
- for(int i=0,n=names.length;i
- System.out.print(names[i]);
- }
运行结果:
a b c d e
但是在做ip解析时发现出了问题,代码如下:
java 代码
- String value = "209.242.1.1";
- String[] names = value.split(".");
- for(int i=0,n=names.length;i
- System.out.print(names[i]+" ");
- }
理想的输出结果应该是219 242 1 1,结果什么都没有输出。
很奇怪哦。看一下split的方法签名吧。
java 代码
- public String[] split(String regex)
这里的参数的名称是 regex ,也就是 Regular Expr<wbr>ession (正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式:</wbr>
java 代码
- public String[] split(String regex, int limit) {
- return Pattern.compile(regex).split(this, limit);
- }
split 的实现直接调用的 Matcher 类的 split 的方法。“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。
修改代码如下:
java 代码
- String value = "209.242.1.1";
- String[] names = value.split("\\.");
- for(int i=0,n=names.length;i
- System.out.print(names[i]+" ");
- }
Replace 方法
首先看看Replace方法的介绍
java 代码
- String java.lang.String.replace(char oldChar, char newChar)
- Returns a new string resulting from replacing all occurrences of oldChar in
- this string with newChar.
- If the character oldChar does not occur in the character sequence represented by
- this String object, then a reference to this String object is returned. Otherwise,
- a new String object is created that represents a character sequence identical to
- the character sequence represented by this String object, except that every
- occurrence of oldChar is replaced by an occurrence of newChar.
- Examples:
- "mesquite in your cellar".replace('e', 'o')
- returns "mosquito in your collar"
- "the war of baronets".replace('r', 'y')
- returns "the way of bayonets"
- "sparring with a purple porpoise".replace('p', 't')
- returns "starring with a turtle tortoise"
- "JonL".replace('q', 'x') returns "JonL" (no change)
- Parameters:
- oldChar the old character.
- newChar the new character.
- Returns:
- a string derived from this string by replacing every occurrence of oldChar with newChar.
用法 :
java 代码
- @Test
- public void testReplace(){
- String A = "aaa bCskd dkkAik kdaFe";
- System.out.println(A.replace('a', '_'));
- }
结果为:___ bCskd dkkAik kd_Fe
此方法用来替换char字符,对字符串不能处理
A.replace('aaa', '=') 是错误的
但是 A.replace(“aaa”, “=”)却是可以的
java 代码
- @Test
- public void testReplace(){
- String A = "aaa bCskd dkkAik kaaaFe";
- System.out.println(A.replace("aaa", "="));
- }
结果为:= bCskd dkkAik k=Fe
可见 replace("","")与方法replaceAll("","")拥有差不多的功能
仔细看看差别
java 代码
- String java.lang.String.replace(CharSequence target, CharSequence replacement)
- Replaces each substring of this string that matches the literal target sequence
- with the specified literal replacement sequence. The replacement proceeds from
- the beginning of the string to the end, for example, replacing "aa" with "b" in
- the string "aaa" will result in "ba" rather than "ab".
- Parameters:
- target The sequence of char values to be replaced
- replacement The replacement sequence of char values
- Returns:
- The resulting string
- Throws:
- NullPointerException if target or replacement is null.
- Since:
- 1.5
是1.5之后才有的功能哦
但是 replaceAll却更强大
java 代码
- @Test
- public void testReplace(){
- String A = "aaa bCskd dkkAik kaaaFe";
- System.out.println(A.replace(" ", ""));
- }
结果为aaabCskddkkAikkaaaFe
replaceAll可以将字符串内部的空格去掉
但是用replace(' ','')方法却不可以
replace(" ","")方法可以
另外一点
java 代码
- @Test
- public void testReplace(){
- String A = "aaa bCskd dkkAik kaaaFe";
- System.out.println(A.replaceAll("[a-z]", "="));
- }
结果为:=== =C=== ===A== ====F=
replaceAll可以用正则表达式,强大啊
我们看看replaceAll的用法
java 代码
- String java.lang.String.replaceAll(String regex, String replacement)
- Replaces each substring of this string that matches the given regular expression
- with the given replacement.
- An invocation of this method of the form str.replaceAll(regex, repl) yields exactly
- the same result as the expression
- java.util.regex.Pattern. compile(regex).java.util.regex.Pattern.matcher(java.lang.CharSequence) matcher(str). replaceAll(repl)
- See Also:
- java.util.regex.Pattern
- Parameters:
- regex the regular expression to which this string is to be matched
- Returns:
- The resulting String
- Throws:
- PatternSyntaxException if the regular expression's syntax is invalid
- Since:
- 1.4
- @spec
- JSR-51
参考:http://blog.163.com/zzcc_8/blog/static/1603547220101111147830/
Illegal group reference异常
String replaceAll(regex, replacement)函数 , 由于第一个参数支持正则表达式,replacement中出现“$”,会按照$1$2的分组模式进行匹配,当编译器发现“$”后跟的不是整数的时候,就会抛出“非法的组引用”的异常。
分享到:
相关推荐
为了实现一个兼容性更好的replaceAll方法,还可以采用其他一些方法,比如利用split和join方法来实现。split方法可以将原始字符串按照特定的分隔符进行拆分,返回一个数组,然后可以通过join方法将数组中的元素用新的...
replaceAll 函数的实现方法是使用 split 函数把原始字符串分割成数组,然后使用 join 函数把数组元素连接起来。例如,"the man and the plan".replaceAll('the','a') 将生成字符串 "aman and a plan"。 另外一个...
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....
replaceAll可以使用split和join方法快速实现,例如: ```javascript String.prototype.replaceAll = function(find, replaceWith) { return this.split(find).join(replaceWith); }; ``` **occurrences函数** ...
Java 中的 String 类提供了三种方法来实现字符串的替换,分别是 replace、replaceAll 和 replaceFirst。 1. replace 方法 replace 方法将字符串中所有出现的 oldChar 字符串替换为 newChar 字符串。如: String ...
另一种实现字符串替换的方法是使用String.prototype.split()方法将字符串分割成数组,然后使用Array.prototype.join()方法将数组连接成新的字符串。例如: `const s = 'hello. hello. hello.';` `s.split('hello. '...
具体来说,我们可以利用String对象的split()方法将源字符串按照需要被替换的字符串分割成数组,然后使用数组的join()方法将分割后数组的元素重新组合成一个字符串,只不过此时替换掉了原有的模式字符串。该自定义...
`split()`方法经常与其他字符串处理方法一起使用,如`join()`(用于合并字符串数组)和`replaceAll()`(用于替换匹配正则表达式的部分)等,以完成更复杂的字符串操作。 ### 7. 性能考虑 对于非常大的字符串,`...
- `replaceAll("\\s+", " ")` 使用正则表达式匹配一个或多个连续空格,并替换为单个空格。 2. **使用`StringTokenizer`或`split()`**: - 先使用`split("\\s+")`按空格拆分字符串,然后用`join()`将非空元素重新...
`split()` 用于分割字符串,`substring()` 和 `slice()` 用于截取字符串,`join()` 用于连接数组元素成字符串,`indexOf()` 用于查找子字符串的位置,以及 `ReplaceAll()` 函数用于替换所有匹配项。这些方法在实际...
本文档对JAVA常用API文档进行了详细的介绍,涵盖了String、Mathches、Split、ReplaceAll、Object和Point等方面的知识点。了解这些API文档对于程序员来说是非常重要的,有助于提高编程效率和代码质量。
字符串实用程序该库在std::string 中实现了许多常用但本机不支持的函数,如Split 、 Join 、 Trim 、 Compact 、 ReplaceAll 、 ToLower 、 ToUpper 、 Repeat 、 ReadFile 、 WriteFile等。测试make test Passing: ...
这个压缩包中的文件分别对应了`String`类的一些重要API用法,包括`split()`, `substring()`, `replaceAll()`, `trim()`, `StringBuilder`, `charAt()`, `indexOf()`, 和 `valueOf()`。以下是对这些API的详细解释: ...
最后,切割(split)字符串常用 `split()` 方法,它根据给定的正则表达式将字符串分割成多个部分。在 `strSplit()` 方法中,我们使用 `str.split("\\.")` 将字符串按"."分隔,生成一个字符串数组。 总结起来,Java...
在RegexStringReplaceFirstAndSplit.java文件中,可能包含了使用`Matcher.replaceAll()`方法进行全局替换和`split()`方法进行字符串分割的例子。`replaceAll()`方法将字符串中所有匹配正则表达式的部分替换为指定的...
String类提供了几个用于正则表达式的方法,如`matches()`, `split()`, `replaceAll()`和`replaceFirst()`等。`matches()`方法用于检查字符串是否与正则表达式匹配,例如`"123".matches("\\d+")`会返回`true`。`split...
- 解析:先使用`replaceAll("\\.+","")`去除句中的点号,再使用`replaceAll("(.)\\1+","$1")`去除重复字符。 ```java String str = "我我..我我.我我.要要要..学学学..学学.编编..程程程"; str = str.replaceAll...
除了`split()`方法,`Matcher`还提供了一些其他有用的方法,比如`replaceAll(String replacement)`用于替换所有匹配的子字符串,`replaceFirst(String replacement)`仅替换第一个匹配的子字符串,以及`groupCount()`...