如何在Java中拆分字符串?

1917

我想要将字符串"004-034556"按照分隔符"-"拆分成两个字符串:

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

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

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

39个回答

8
您可以使用Split()函数:
import java.io.*;

public class Splitting
{

    public static void main(String args[])
    {
        String Str = new String("004-034556");
        String[] SplittoArray = Str.split("-");
        String string1 = SplittoArray[0];
        String string2 = SplittoArray[1];
    }
}

否则,您可以使用StringTokenizer:

import java.util.*;
public class Splitting
{
    public static void main(String[] args)
    {
        StringTokenizer Str = new StringTokenizer("004-034556");
        String string1 = Str.nextToken("-");
        String string2 = Str.nextToken("-");
    }
}

7
这里有两种实现方法。
方法一:由于您需要使用特殊字符分割两个数字,可以使用正则表达式。
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TrialClass
{
    public static void main(String[] args)
    {
        Pattern p = Pattern.compile("[0-9]+");
        Matcher m = p.matcher("004-034556");

        while(m.find())
        {
            System.out.println(m.group());
        }
    }
}

方法二:使用字符串分割方法

public class TrialClass
{
    public static void main(String[] args)
    {
        String temp = "004-034556";
        String [] arrString = temp.split("-");
        for(String splitString:arrString)
        {
            System.out.println(splitString);
        }
    }
}

6
你可以使用StringTokenizer来将一个字符串按照分隔符分为两个或者多个部分:
StringTokenizer st = new StringTokenizer("004-034556", "-");
while(st.hasMoreTokens())
{
    System.out.println(st.nextToken());
}

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

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)


该方法可以帮助您将字符串分割成子字符串,并使用给定的字符或正则表达式作为分隔符。请参考以上链接了解更多详情。
String data = "004-034556-1212-232-232";
int cnt = 1;
for (String item : data.split("-")) {
        System.out.println("string "+cnt+" = "+item);
        cnt++;
}

这里有很多分割字符串的例子,但我对代码进行了一些优化。


用|替换-,看看会发生什么 :) - R Sun
在这种情况下,请查看 https://dev59.com/8Wgv5IYBdhLWcg3wKtvj - R Sun

4
String str="004-034556"
String[] sTemp=str.split("-");// '-' is a delimiter

string1=004 // sTemp[0];
string2=034556//sTemp[1];

3

我想写一个算法,而不是使用Java内置函数:

public static List<String> split(String str, char c){
    List<String> list = new ArrayList<>();
    StringBuilder sb = new StringBuilder();

    for (int i = 0; i < str.length(); i++){
        if(str.charAt(i) != c){
            sb.append(str.charAt(i));
        }
        else{
            if(sb.length() > 0){
                list.add(sb.toString());
                sb = new StringBuilder();
            }
        }
    }

    if(sb.length() >0){
        list.add(sb.toString());
    }
    return list;
}

2
String s = "TnGeneral|DOMESTIC";
String a[]=s.split("\\|");
System.out.println(a.toString());
System.out.println(a[0]);
System.out.println(a[1]);

输出:

TnGeneral
DOMESTIC

1
为了分割字符串,可以使用String.split(regex)。请查看以下示例:
String data = "004-034556";
String[] output = data.split("-");
System.out.println(output[0]);
System.out.println(output[1]);

输出

004
034556

注意:
这个分割(正则表达式)需要一个正则表达式作为参数。记得转义正则表达式特殊字符,比如句号/点号。

1
您可以使用方法split
public class Demo {
    public static void main(String args[]) {
        String str = "004-034556";

        if ((str.contains("-"))) {
            String[] temp = str.split("-");
            for (String part:temp) {
                System.out.println(part);
            }
        }
        else {
            System.out.println(str + " does not contain \"-\".");
        }
    }
}

0
 String string = "004^034556-34";
 String[] parts = string.split(Pattern.quote("^"));

如果您有特殊字符,则可以使用Patter.quote。如果您只有破折号(-),则可以缩短代码:

 String string = "004-34";
 String[] parts = string.split("-");

如果您尝试在破折号(^)的位置添加其他特殊字符,则会生成错误ArrayIndexOutOfBoundsException。为此,您必须使用Pattern.quote


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接