Il existe de nombreuses façons différentes de supprimer les espaces des chaînes en Java, telles que trim
, replaceAll
, etc. Cependant, certaines nouvelles fonctionnalités ont été ajoutées dans JDK 11
, telles que strip
, stripLeading
, stripTrailing
, etc. trim
,replaceAll
等。但是,在JDK 11
添加了一些新的功能,如strip
、stripLeading
、stripTrailing
等。
想要从String中移除空格部分,有多少种方法,下面介绍JDK原生自带的方法,不包含第三方工具类库中的类似方法
trim()
: 删除字符串开头和结尾的空格。
strip()
: 删除字符串开头和结尾的空格。
stripLeading()
: 只删除字符串开头的空格
stripTrailing()
: 只删除字符串的结尾的空格
replace()
: 用新字符替换所有目标字符
replaceAll()
: 将所有匹配的字符替换为新字符。此方法将正则表达式作为输入,以标识需要替换的目标子字符串
replaceFirst()
: 仅将目标子字符串的第一次出现的字符替换为新的字符串
需要注意的最重要的一点是,在Java中String对象是不可变的,这意味着我们不能修改字符串,因此以上所有的方法我们得到的都是一个新的字符串。
trim()
是Java开发人员最常用的删除字符串开头和结尾的空格方法
public class StringTest { public static void main(String[] args) { String stringWithSpace = " Hello word java "; StringTest.trimTest(stringWithSpace); } private static void trimTest(String stringWithSpace){ System.out.println("Before trim : \'" + stringWithSpace + "\'"); String stringAfterTrim = stringWithSpace.trim(); System.out.println("After trim : \'" + stringAfterTrim + "\'"); } }
输出结果
Before trim : ' Hello word java '
After trim : 'Hello word java'
通过使用trim方法,原字符串的开头和结尾部分的空格已经被删除。其实,trim移除的空白字符指的是指ASCII值小于或等于32的任何字符(’ U+0020 '):
JDK 11
的发行版中,添加了新的strip()
方法来删除字符串中的前导和末尾空格。
trim
方法只能针对ASCII值小于等于32的字符进行移除,但是根据Unicode标准,除了ASCII中的字符以外,还是有很多其他的空白字符的。
而且为了识别这些空格字符,从Java 1.5开始,还在Character类中添加了新的isWhitespace(int)方法。该方法使用unicode来标识空格字符。
而在Java 11中新增的这个strip方法就是使用这个Character.isWhitespace(int)方法来判断是否为空白字符并删除它们的:
strip示例
public class StringTest { public static void main(String args[]) { String stringWithSpace ='\u2001' + " Hello word java " + '\u2001'; System.out.println("'" + '\u2001' + "' is space : " + Character.isWhitespace('\u2001')); StringTest.stripTest(stringWithSpace); } private static void stripTest(String stringWithSpace){ System.out.println("Before strip : \'" + stringWithSpace + "\'"); String stringAfterTrim = stringWithSpace.strip(); System.out.println("After strip : \'" + stringAfterTrim + "\'"); } }
结果
' ' is space : true
Before strip : ' Hello word java '
After strip : 'Hello word java'
Java 11 中的 strip()
方法要比trim()
方法更加强大,他可以移除很多不在ASCII中的空白字符,判断方式就是通过Character.isWhitespace()
stripLeading() : Supprime uniquement les espaces au début de la chaîne | stripTrailing() : Uniquement supprimer des caractères L'espace à la fin de la chaîne |
---|---|
replaceAll ()</code > : Remplacez tous les caractères correspondants par de nouveaux caractères. Cette méthode prend une expression régulière en entrée pour identifier la sous-chaîne cible qui doit être remplacée </td></li><li><td><code>replaceFirst() : Seule la première occurrence de la sous-chaîne cible est remplacée. Les caractères sont remplacé par de nouvelles chaînes | |
trim() est la méthode la plus couramment utilisée par les développeurs Java pour supprimer les espaces au début et à la fin d'une chaîne | Résultats de sortie |
En utilisant la méthode trim, les espaces au début et à la fin de la chaîne d'origine ont été supprimés. En fait, les caractères d'espacement supprimés par trim font référence à tout caractère ayant une valeur ASCII inférieure ou égale à 32 (’ U+0020 ') : | |
trim ne peut supprimer que les caractères dont la valeur ASCII est inférieure ou égale à 32, mais selon la norme Unicode, en plus des caractères en ASCII, il existe encore de nombreux autres caractères d'espacement. | Et afin de reconnaître ces caractères d'espace, à partir de Java 1.5, une nouvelle méthode isWhitespace(int) a été ajoutée à la classe Character. Cette méthode utilise Unicode pour identifier les caractères d'espace. |
public class StringTest { public static void main(String args[]) { String stringWithSpace =" Hello word java "; StringTest.replaceTest(stringWithSpace); } private static void replaceTest(String stringWithSpace){ System.out.println("Before replace : \'" + stringWithSpace + "\'"); String stringAfterTrim = stringWithSpace.replace(" ", ""); System.out.println("After replace : \'" + stringAfterTrim + "\'"); } }
🎜' ' est un espace : vrai🎜La méthode
Avant strip : 'Bonjour mot java'
Après strip : 'Bonjour mot java'🎜
strip()
dans Java 11 est meilleure que trim(). La méthode
est plus puissante. Elle peut supprimer de nombreux caractères d'espacement qui ne sont pas en ASCII. La méthode Character.isWhitespace()
permet de juger. La différence entre les méthodes 🎜🎜trim() et strip()🎜🎜🎜🎜🎜trim🎜🎜strip🎜🎜🎜🎜Introduit dans Java 1🎜🎜Introduit dans Java 11🎜🎜🎜🎜Utiliser ASCII🎜🎜Utiliser Unicode valeurs 🎜 🎜🎜🎜Supprimez les caractères d'espacement de début et de fin 🎜🎜Supprimez les caractères d'espacement de début et de fin🎜🎜🎜🎜Supprimez les caractères dont la valeur ASCII est inférieure ou égale à ’U+0020’ ou ’32’ selon Unicode🎜🎜🎜🎜stripLeading()
和stripTrailing()
方法也都是在Java 11中添加的。作用分别是删除字符串的开头的空格以及删除字符串的末尾的空格。stripLeading
、stripTrailing
也使用Character.isWhitespace(int)
来标识空白字符。用法也和strip类似:
public class StringTest { public static void main(String args[]) { String stringWithSpace ='\u2001' + " Hello word java " + '\u2001'; System.out.println("'" + '\u2001' + "' is space : " + Character.isWhitespace('\u2001')); StringTest.stripLeadingTest(stringWithSpace); StringTest.stripTrailingTest(stringWithSpace); } private static void stripLeadingTest(String stringWithSpace){ System.out.println("删除开头的空白字符"); System.out.println("Before stripLeading : \'" + stringWithSpace + "\'"); String stringAfterTrim = stringWithSpace.stripLeading(); System.out.println("After stripLeading : \'" + stringAfterTrim + "\'"); } private static void stripTrailingTest(String stringWithSpace){ System.out.println("删除结尾的空白字符"); System.out.println("Before stripTrailing : \'" + stringWithSpace + "\'"); String stringAfterTrim = stringWithSpace.stripTrailing(); System.out.println("After stripTrailing : \'" + stringAfterTrim + "\'"); } }
输出结果:
' ' is space : true
删除开头的空白字符
Before stripLeading : ' Hello word java '
After stripLeading : 'Hello word java '
删除结尾的空白字符
Before stripTrailing : ' Hello word java '
After stripTrailing : ' Hello word java'
replace是从java 1.5中添加的,可以用指定的字符串替换每个目标子字符串。
此方法替换所有
匹配的目标元素
public class StringTest { public static void main(String args[]) { String stringWithSpace =" Hello word java "; StringTest.replaceTest(stringWithSpace); } private static void replaceTest(String stringWithSpace){ System.out.println("Before replace : \'" + stringWithSpace + "\'"); String stringAfterTrim = stringWithSpace.replace(" ", ""); System.out.println("After replace : \'" + stringAfterTrim + "\'"); } }
结果:
Before replace : ' Hello word java '
After replace : 'Hellowordjava'
使用replace方法可以替换掉字符串中的所有空白字符。需要特别注意的是,和trim方法一样,replace方法只能替换ASCII中的空白字符。
replaceAll
是Jdk 1.4中添加的最强大的字符串操作方法之一。我们可以将这种方法用于许多目的。
使用replaceAll()
方法,我们可以使用正则表达式来用来识别需要被替换的目标字符内容。使用正则表达式,就可以实现很多功能,如删除所有空格,删除开头空格,删除结尾空格等等。
\s+ 所有的空白字符
^\s+ 字符串开头的所有空白字符
\s+$ 字符串结尾的所有空白字符
在java中要添加\
我们必须使用转义字符,所以对于\s+
我们必须使用 \\s+
replaceAll(regex, “”); // 将正则表达式匹配到的内容,替换为""
public class StringTest { public static void main(String args[]) { String stringWithSpace =" Hello word java "; StringTest.replaceAllTest(stringWithSpace," "); StringTest.replaceAllTest(stringWithSpace,"\\s+"); StringTest.replaceAllTest(stringWithSpace,"^\\s+"); StringTest.replaceAllTest(stringWithSpace,"\\s+$"); } private static void replaceAllTest(String stringWithSpace,String regex){ System.out.println("Before replaceAll with '"+ regex +"': \'" + stringWithSpace + "\'"); String stringAfterTrim = stringWithSpace.replaceAll(regex, ""); System.out.println("After replaceAll with '"+ regex +"': \'" + stringAfterTrim + "\'"); } }
Before replaceAll with ' ': ' Hello word java '
After replaceAll with ' ': 'Hellowordjava'
Before replaceAll with '\s+': ' Hello word java '
After replaceAll with '\s+': 'Hellowordjava'
Before replaceAll with '^\s+': ' Hello word java '
After replaceAll with '^\s+': 'Hello word java '
Before replaceAll with '\s+$': ' Hello word java '
After replaceAll with '\s+$': ' Hello word java'
replaceFirst方法也是在jdk1.4中添加的,它只将给定正则表达式的第一个匹配项
替换为替换字符串。
public class StringTest { public static void main(String args[]) { String stringWithSpace =" Hello word java "; StringTest.replaceFirstTest(stringWithSpace," "); StringTest.replaceFirstTest(stringWithSpace,"\\s+"); StringTest.replaceFirstTest(stringWithSpace,"^\\s+"); StringTest.replaceFirstTest(stringWithSpace,"\\s+$"); } private static void replaceFirstTest(String stringWithSpace,String regex){ System.out.println("Before replaceFirst with '"+ regex +"': \'" + stringWithSpace + "\'"); String stringAfterTrim = stringWithSpace.replaceFirst(regex, ""); System.out.println("After replaceFirst with '"+ regex +"': \'" + stringAfterTrim + "\'"); } }
结果:
Before replaceFirst with ' ': ' Hello word java '
After replaceFirst with ' ': ' Hello word java '
Before replaceFirst with '\s+': ' Hello word java '
After replaceFirst with '\s+': 'Hello word java '
Before replaceFirst with '^\s+': ' Hello word java '
After replaceFirst with '^\s+': 'Hello word java '
Before replaceFirst with '\s+$': ' Hello word java '
After replaceFirst with '\s+$': ' Hello word java'
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!