首页 > Java > 如何通过分隔符将字符串分成两个字符串?

如何通过分隔符将字符串分成两个字符串?

上一篇 下一篇

我想通过分隔符将字符串分成两个字符串:"004-034556""-"

part1 = "004";
part2 = "034556";

这意味着第一个字符串将包含 之前的字符,第二个字符串将包含 之后的字符。'-''-'

我还想检查字符串中是否有。'-'

分割线

网友回答:

直接处理字符串的替代方法是使用带有捕获组的正则表达式。这样做的好处是,它可以直接暗示对输入进行更复杂的约束。例如,以下内容将字符串拆分为两部分,并确保两部分仅由数字组成:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

class SplitExample
{
    private static Pattern twopart = Pattern.compile("(\d+)-(\d+)");

    public static void checkString(String s)
    {
        Matcher m = twopart.matcher(s);
        if (m.matches()) {
            System.out.println(s + " matches; first part is " + m.group(1) +
                               ", second part is " + m.group(2) + ".");
        } else {
            System.out.println(s + " does not match.");
        }
    }

    public static void main(String[] args) {
        checkString("123-4567");
        checkString("foo-bar");
        checkString("123-");
        checkString("-4567");
        checkString("123-4567-890");
    }
}

由于模式在此实例中是固定的,因此可以提前编译并存储为静态成员(在示例中在类加载时初始化)。正则表达式为:

(d+)-(d+)

括号表示捕获组;与正则表达式的该部分匹配的字符串可以通过 Match.group() 方法访问,如图所示。d 匹配和单个十进制数字,+ 表示“匹配前面的一个或多个表达式”。– 没有特殊含义,因此只需匹配输入中的该字符。请注意,在将其编写为 Java 字符串时,您需要对反斜杠进行双重转义。其他一些例子:

([A-Z]+)-([A-Z]+)          // Each part consists of only capital letters 
([^-]+)-([^-]+)            // Each part consists of characters other than -
([A-Z]{2})-(d+)           // The first part is exactly two capital letters,
                           // the second consists of digits

分割线

网友回答:

使用正确命名的方法。String#split()

String string = "004-034556";
String[] parts = string.split("-");
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556

请注意,假定 的参数是正则表达式,因此请记住在必要时转义特殊字符。split

有12个字符具有特殊含义:反斜杠,插入符号,美元符号,句点或点,竖线或管道符号,问号,星号或星号,加号,左括号,右括号,以及左方括号,左大括号,这些特殊字符通常被称为“元字符”。^$.|?*+()[{

例如,要在句点/点上拆分(在正则表达式中表示“任何字符”),请使用反斜杠来转义单个特殊字符,或者使用字符类来表示这样的文字字符,或者用于转义整个字符串,或者像这样转义整个字符串。.split("\.")[]split("[.]")Pattern#quote()split(Pattern.quote("."))

String[] parts = string.split(Pattern.quote(".")); // Split on the exact string.

要事先测试字符串是否包含某些字符,只需使用 .String#contains()

if (string.contains("-")) {
    // Split it.
} else {
    throw new IllegalArgumentException("String " + string + " does not contain -");
}

请注意,这不需要正则表达式。为此,请改用。String#matches()

如果您想在生成的部分中保留拆分字符,请使用积极的环顾四周。如果您希望拆分字符最终位于左侧,请在模式上添加前缀组来使用正面后视。?<=

String string = "004-034556";
String[] parts = string.split("(?<=-)");
String part1 = parts[0]; // 004-
String part2 = parts[1]; // 034556

如果您希望拆分字符最终位于右侧,请在模式上添加前缀组来使用积极的前瞻。?=

String string = "004-034556";
String[] parts = string.split("(?=-)");
String part1 = parts[0]; // 004
String part2 = parts[1]; // -034556

如果要限制结果部分的数量,则可以提供所需的数字作为方法的第二个参数。split()

String string = "004-034556-42";
String[] parts = string.split("-", 2);
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556-42

分割线

网友回答:

用:

String[] result = yourString.split("-");
if (result.length != 2) 
     throw new IllegalArgumentException("String not in correct format");

这会将您的字符串分成两部分。数组中的第一个元素将是包含 之前的内容的部分,数组中的第二个元素将包含字符串中 .--

如果数组长度不是 2,则字符串的格式不是:。string-string

查看类中的 split() 方法。String

模板简介:该模板名称为【如何通过分隔符将字符串分成两个字符串?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 224次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-17
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信公众平台 微信素材 响应式 微信图片 微信模板 企业网站 html5 单页式简历模板 微信文章 自适应
您可能会喜欢的其他模板