使用分隔符将Java字符串拆分为两个字符串

11

我有一个字符串,它的值为name:score。 我想将该字符串拆分成两个字符串,字符串a的值为name,字符串b的值为score

正确的函数/语法是什么?

我已经查看了string.split,但找不到将数据拆分成两个单独字符串的实际语法。


1
您有查看 split() 函数的返回值吗? - Ed Staub
1
没事,我是个白痴。变量[0]和变量[1]一直都有值。 - CryptoJones
7个回答

33

split函数很适合这种情况:

String[] str_array = "name:score".split(":");
String stringa = str_array[0]; 
String stringb = str_array[1];

如果你有像这样的东西 a:1:2 name = a:1?!?@,该怎么办? - Ran Adler
它将返回一个字符串数组,并能够检索第1个和第2个值。 - Dimitri
这段代码仅在您的分数中不包含冒号时才有效。请确保在您的代码中考虑到这一点。 - Jono

6
你需要了解正则表达式:
String[] s = myString.split("\\:"); // escape the colon just in case as it has special meaning in a regex

或者您也可以使用StringTokenizer。


4
“:”本身没有任何特殊含义。 - ratchet freak
安全起见最好进行转义... 当冒号具有特殊含义时,/a{1:2}/就是一个例子... - TraderJoeChicago
@TraderJoeChicago:不,它没有。你可能在谈论 a{1,2},它匹配 a 1 或 2 次。冒号本身没有任何特殊含义。 - Amal Murali

2

使用:

String [] stringParts = myString.split(":");

但这不就是创建一个新的数组,而不是将数据移动到其他字符串中吗? - CryptoJones
@CryptoJones 是的,它正在创建一个包含2个字符串(名称和分数)的新字符串数组,这正是您想要的。 - Oscar Gomez
@CryptoJones - 我猜split返回原始字符串的子字符串,实际上并不移动任何字符数据。但你不应该关心这个。在Java中,字符串对象是不可变的,并且它们的内部数据对于您的代码是不可访问的,因此它对您以后的操作没有任何影响。 - Ted Hopp

2
String row = "name:12345";
String[] columns = row.split(":");
assert columns.length == 2;
String name = columns[0];
int score = Integer.parseInt(columns[1]);

1

Split函数可以将字符串分割成数组:

String input = "name:score";
final String[] splitStringArray = input.split(":");
String a = splitStringArray[0];
String b = splitStringArray[1];

1

$ cat Split.java

public class Split {
    public static void main(String argv[]) {
        String s = "a:b";
        String res[] = s.split(":");
        System.out.println(res.length);
        for (int i = 0; i < res.length; i++)
            System.out.println(res[i]);
    }
}

$ java Split

2
a
b

1
如果你有像这样的东西:a:1:2 name = a:1??,该怎么办?
 private String extractName(String str) {
    String[] split = str.split(":");
    return str.replace(split[split.length - 1], "");
  }

  private int extractId(String str){
    String[] split  = str.split(":");
    return  Integer.parseInt(CharMatcher.DIGIT.retainFrom(split[split.length-1]));
  }

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