如何在 Java 中分割字符串?

字符串,“004-034556” ,分成两个:

string1="004";
string2="034556";

这意味着第一个字符串将包含“-”之前的字符,第二个字符串将包含“-”之后的字符。 我还要检查字符串中是否有“-”。 如果不是,出现异常。怎么做?

7个回答

String str="004-034556";
//检查是否含有"-"字符
if(str.contains("-")){
   String arr[]=str.split("-");  //这里就将字符串004-034556分割成044,034556   取值的话for循环数组、
     for(int i=0;i<arr.length;i++){
         输出 arr[i]; 就是你要的
     }
}else{
       输出异常或者不含有"-"字符
}

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回答得是不错,但是他是csdn 请来刷流量的。
大约一年之前 回复
        String string = "004-034556";
        if (string.contains("-")) {
            String string1 = string.substring(0, string.indexOf("-"));
            System.out.println(string1);
            String string2 = string.substring(string.indexOf("-") + 1);
            System.out.println(string2);
        }

Just use the appropriate method: String#split().
合适的方法,有一个就够了: String#split()
String string = "004-034556";String[] parts = string.split("-");String part1 = parts[0]; // 004String part2 = parts[1]; // 034556
注意,这需要一个正则表达式,因此记得在必要时对特殊字符进行转义。
有12个具有特殊意义的字符: 反斜杠,插入符号 ^ ,美元符号 $,句号或点。 ,垂直条或管道符号 | ,问号? ,星号或星号 * ,加号 + ,开括号(,闭括号)和开方括号[ ,开括号花括号{ ,这些特殊字符通常被称为“元字符”。
所以,如果你想分开,例如 period / dot。 也就是正则表达式中的“任何字符” ,可以使用反斜杠来转义单个特殊字符,比如 so split ( .) ,或者使用字符类[]来表示文字字符,如“[ . ]”) ,或者使用 Pattern # quote ()像这样转义整个字符串split(Pattern.quote(".")) .
String[] parts = string.split(Pattern.quote(".")); // Split on period.
要预先测试字符串是否包含某些字符,用 String # contains ()。

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

注意,没采用正则表达式。可以改用 String # matches ()。
如果您希望在生成的部分中保留拆分的字符,那么请 positive lookaround。 如果你想有分字符在左边结束,用 ?<=。
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]; // 004String part2 = parts[1]; // -034556
如果希望限制结果部分的数量,那么可以将所需的数量作为 split ()方法的第二个参数提供。
String string = "004-034556-42";String[] parts = string.split("-", 2);String part1 = parts[0]; // 004String part2 = parts[1]; // 034556-42

直接处理字符串的另一种方法是使用带有捕获组的正则表达式。这样做的好处是可以直接对输入进行更复杂的约束。例如,下面将字符串分成两部分,并确保两部分都只包含数字:

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");
    }}

由于模式在此实例中是固定的,因此可以提前编译它并将其存储为静态成员(static member)(在本例中的类加载时初始化)。正则表达式是:
(\d+)-(\d+)
圆括号表示捕获组; 匹配那部分 regexp 的字符串可以通过 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[] result = yourString.split("-");if (result.length != 2) 
     throw new IllegalArgumentException("String not in correct format");

这将把你的字符串分成两部分。数组中的第一个元素将是-之前包含填充的部分,数组中的第二个元素将包含-之后的字符串部分。
如果数组长度不是2,那么字符串的格式就不是:string-string。
检查 String 中的 split ()。

String[] out = string.split("-");
这样就行了。String 类有许多用于字符串操作很多。

String items[]=str.split("-");
就好了,如果没有打印出str,不会报错

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问