如何在Java中按分隔符分割字符串?2025年3月25日 | 阅读10分钟 在Java中,分割字符串是一项重要且常用的编码操作。Java提供了多种方法来分割字符串。但最常见的方法是使用String类的split()方法。在本节中,我们将学习如何在Java中按分隔符分割字符串。此外,我们还将学习其他一些分割字符串的方法,例如使用StringTokenizer类,Scanner.useDelimiter()方法。在开始讨论主题之前,让我们先了解什么是分隔符。 什么是分隔符?在Java中,分隔符是用于将字符串分割(分隔)成标记的字符。Java允许我们将任何字符定义为分隔符。Java提供了许多字符串分割方法,它们使用空格字符作为分隔符。空格分隔符是Java中的默认分隔符。 在开始编写程序之前,让我们先理解字符串的概念。 字符串由两种文本组成,即标记和分隔符。标记是有意义的词,而分隔符是分割或分隔标记的字符。让我们通过一个例子来理解它。 要理解Java中的分隔符,我们必须熟悉Java正则表达式。当分隔符用作正则表达式中的特殊字符(如 (.) 和 (|))时,这是必需的。 分隔符示例字符串:Javatpoint 是学习新技术的好网站。 在上面的字符串中,标记是Javatpoint, is, the, best, website, to, learn, new, technologies,分隔符是两个标记之间的空格。 如何在Java中按分隔符分割字符串?Java提供了以下方法来将字符串分割成标记 使用Scanner.next()方法这是Scanner类的一个方法。它查找并返回扫描器中的下一个标记。它通过空格分隔符将字符串分割成标记。完整的标记由匹配分隔符模式的输入标识。 语法 如果下一个标记不可用,则抛出NoSuchElementException。如果输入扫描器已关闭,还会抛出IllegalStateException。 让我们创建一个程序,该程序使用next()方法分割字符串,该方法使用空格将字符串分割成标记。 SplitStringExample1.java 输出 Javatpoint is the best website to learn new technologies 解释 此Java程序演示了如何使用Scanner类将字符串分割成标记。它使用一个句子初始化字符串str。然后,它创建了一个Scanner对象sc,并将字符串str传递给它。它进入一个while循环,使用Scanner类的hasNext()和next()方法遍历字符串中的每个标记。在循环中,使用next()检索并打印每个标记。 使用String.split()方法String类的split()方法用于根据匹配正则表达式的指定分隔符将字符串分割成String对象数组。例如,考虑以下字符串 上述字符串由逗号分隔。我们可以使用以下表达式分割上述字符串 上述表达式在分隔符字符逗号(,)分隔标记时将字符串分割成标记。指定的字符串被分割成以下字符串对象 split()方法有两种变体
String.split(String regex) 它根据指定的正则表达式regex分割字符串。我们可以使用点(.)、空格( )、逗号(,)和任何字符(如z、a、g、l等)。 该方法在使用给定的正则表达式(regex)分割字符串后生成一个字符串数组。数组中的每个条目都是原始字符串的子字符串,按正则表达式模式的出现次数进行分割。 语法 该方法将分隔符正则表达式解析为参数。它返回一个String对象数组。如果解析的正则表达式语法无效,则抛出PatternSyntaxException。 让我们使用split()方法,并按逗号分割字符串。 SplitStringExample2.java 输出 Life is your creation 解释 该Java程序展示了如何使用split()函数将字符串分割成标记。首先,定义一个包含单词“Life,is,your,creation”的字符串。然后,在使用split()函数时,将此字符串作为参数传递,并传入分隔符。这会在字符串中任何出现逗号的地方将其分割,从而创建一个子字符串数组。然后,程序使用for循环遍历此数组,并在过程中将每个标记(子字符串)打印到控制台。 让我们看另一个使用多个分隔符分割字符串的例子。 SplitStringExample3.java 输出 If you don t like something change it 解释 此Java程序展示了如何使用带有多个分隔符的split()方法将字符串分割成标记。首先,定义一个包含文本“If you don't like something, change.it.”的字符串。然后,在调用此字符串的split()方法时,将正则表达式模式“[,. ']+”作为参数传递。根据此模式,字符串将在出现一个或多个字符(,、.或')的地方被分割。字符串数组包含生成的子字符串。然后,程序使用for循环遍历此数组,并在过程中将每个标记(子字符串)打印到控制台。 String.split(String regex, int limit) 它允许我们使用指定的分隔符分割字符串,但分割成有限数量的标记。该方法接受两个参数:regex(分隔符正则表达式)和limit。limit参数用于控制模式应用的次数,从而影响结果数组。它返回通过根据limit参数分割给定字符串而计算出的String对象数组。 split()方法变体之间有一个细微差别,即调用该方法后,它会限制返回的标记数量。 语法 如果解析的正则表达式语法无效,则抛出PatternSyntaxException。 limit参数可以是正数、负数或等于limit。 SplitStringExample4.java 输出 When the limit is positive: Number of tokens: 2 46 -567-7388 When the limit is negative: Number of tokens: 2 Life,is, our,creation When the limit is equal to 0: Number of tokens: 2 Hello how are you? 解释 此Java程序使用多个limit设置来演示split()方法的各种场景。初始化了三个字符串str1、str2和str3,它们具有不同的内容。接下来,它展示了如何使用不同的limit值和分隔符分割每个文本。在第一个场景中,str1以limit为2进行分割;在第二个场景中,str2以limit为-1进行分割;在第三个场景中,str3以limit为0进行分割。它显示了为每个示例生成的标记总数以及实际的标记。 管道分隔字符串示例分割管道(|)分隔的字符串有点棘手。因为管道是Java正则表达式中的一个特殊字符。 在Java中,管道字符("|")在正则表达式中是一个特殊字符,通常用于表示替代。因此,在分割管道分隔的字符串时,需要使用反斜杠("\\")转义管道字符,将其视为字面字符而不是正则表达式特殊字符。 让我们创建一个由管道分隔的字符串,并用管道分割它。 SplitStringExample5.java 输出 L i f e | i s | y o u r | c r e a t i o n 解释 在上面的示例中,我们看到它没有产生与其他分隔符相同的输出。它应该生成标记数组life, yours,和creation,但实际上并没有。它给出了输出中看到的那个结果。 原因是正则表达式引擎将管道分隔符解释为逻辑或运算符。regex引擎在空字符串上分割字符串。 为了解决这个问题,我们必须在将管道字符传递给split()方法时转义它。我们使用以下语句来转义管道字符 在分隔符前添加一对反斜杠(\\)以转义管道。对上述程序进行更改后,regex引擎将管道字符解释为分隔符。 转义管道字符的另一种方法是将管道字符放在一对方括号内,如下所示。在Java regex API中,方括号对充当字符类。 上述两条语句都产生以下输出 输出 Life is your creation 使用StringTokenizer类Java的StringTokenizer是java.util包中定义的旧类。它允许我们将字符串分割成标记。程序员不使用它,因为String类的split()方法可以完成相同的工作。因此,程序员更喜欢split()方法而不是StringTokenizer类。我们使用该类的以下两种方法 StringTokenizer.hasMoreTokens() 该方法遍历字符串并检查分词器字符串中是否还有更多标记。如果当前位置之后字符串中有一个可用标记,则返回true,否则返回false。如果返回true,它会在内部调用nextToken()方法,而nextToken()方法返回标记。 语法 StringTokenizer.nextToken() 它从字符串分词器返回下一个标记。如果字符串分词器中没有可用标记,则抛出NoSuchElementException。 语法 让我们创建一个程序,该程序使用StringTokenizer类分割字符串。 SplitStringExample6.java 输出 Welcome to Javatpoint 解释 此Java程序展示了如何使用StringTokenizer类将字符串分割成标记。首先,定义一个包含文本“Welcome/to/Javatpoint”的字符串str。然后,将字符串str和分隔符“/”传递给构造函数,以创建一个StringTokenizer对象token。使用hasMoreTokens()函数检查是否有更多可用标记,并使用nextToken()方法提取每个标记,它进入一个while循环,遍历字符串中的每个标记。 使用Scanner.useDelimiter()方法Java的Scanner类提供了useDelimiter()方法来将字符串分割成标记。useDelimiter()方法有两种变体
useDelimiter(Pattern pattern)该方法将扫描程序的分隔符模式设置为指定的字符串。它将分隔符模式解析为参数。它返回Scanner。 语法 useDelimiter(String pattern)该方法将扫描程序的分隔符模式设置为从指定字符串构建的模式。它将分隔符模式解析为参数。它返回Scanner。 语法 注意:以上两种方法行为相同,都调用useDelimiter(Pattern.compile(pattern))。在下面的程序中,我们使用了useDelimiter()方法来分割字符串。 SplitStringExample7.java 输出 Do your work self 解释 此Java程序演示了如何使用带有自定义分隔符的Scanner类将字符串分割成标记。第一步是使用字符串“Do/your/work/self”创建一个Scanner对象scan。然后,它使用useDelimiter()方法将分隔符设置为“/”。使用hasNext()函数检查是否有更多可用标记,并使用next()方法获取每个标记,它进入一个while循环,遍历字符串中的每个标记。在循环中,每个标记都会被打印到控制台。 |
异常处理是 Java 编程的一个关键方面,可确保您的代码能够优雅地处理意外情况。其中一种异常是 EOFException(“文件结束异常”)。当涉及文件输入或输出的操作到达文件末尾时,会发生此异常...
5 分钟阅读
与 0 最接近的对和问题要求识别数组中提供最接近零的总和的数字。总绝对差值最小化在金融、物理和优化等领域中至关重要,同时处理优化任务。运行暴力法...
5 分钟阅读
对象是理解面向对象技术 (OOP) 的关键。面向对象编程的目的是在编程中实现现实世界中的实体。它还强调数据的绑定。有各种 OOPs 概念,其中对象是其中之一。在本节中,我们将...
阅读 2 分钟
Java中的宏是简化代码和提高代码可读性的强大且必不可少的工具。虽然Java本身不像某些其他编程语言那样原生支持宏,但开发人员通常会使用各种技术和库来实现宏。在本节中,我们将探讨什么是...
阅读 4 分钟
在 Java 中,继承使一个类能够采用另一个类的行为和功能。从中继承功能和行为的类被称为基类、父类或超类。接收类通常被称为子类,...
阅读 4 分钟
Java 是一种面向对象的编程语言,这意味着对象在其设计中起着核心作用。Java 中包含数据和行为的基本事物称为对象。为了使 Java 代码高效且模块化,理解对象至关重要。我们将研究对象...
阅读 4 分钟
类和对象是Java编程语言的基础,因为它是一种面向对象的语言。当我们只需要在一个程序中存储一个对象时,我们使用了Object类型的变量。然而,使用项目数组更好……
阅读 3 分钟
由三个不同直径的圆盘和一对钉子组成的著名数学谜题是汉诺塔。该谜题的目标是在遵守以下规则的情况下,在钉子之间移动每个圆盘:一次只能移动一个圆盘...
阅读 4 分钟
给定一个字符串。我们的任务是通过插入字符将该字符串转换为回文串。字符只能插入到输入字符串的最左侧。在输出中,我们需要提及字符的总数...
阅读 8 分钟
问题陈述 您有三个大小为 N 的整数数组,分别代表 N 个盒子的身高、宽度和长度。您的任务是将盒子堆叠起来,使身高达到最大,并返回总身高。要放一个...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India