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

使用分隔符将Java字符串拆分为两个字符串,java,regex,string,Java,Regex,String,我有一个字符串,其值为name:score。我想将字符串拆分为两个字符串,一个字符串a的值为name,另一个字符串b的值为score 执行此操作的正确函数/语法是什么 我已经查看了string.split,但找不到将数据返回到两个单独字符串中的实际语法 使用: String [] stringParts = myString.split(":"); 您需要研究正则表达式: String[] s = myString.split("\\:"); // escape the colon just

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

执行此操作的正确函数/语法是什么

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

使用:

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

您需要研究正则表达式:

String[] s = myString.split("\\:"); // escape the colon just in case as it has special meaning in a regex

或者也可以使用StringTokenizer。

Split创建一个包含字符串的数组:

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

split
功能适用于以下情况:

String[] str_array = "name:score".split(":");
String stringa = str_array[0]; 
String stringb = str_array[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]);
    }
}

如果你有这样的东西怎么办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]));
  }

你看过split()的返回值了吗?没关系,我是个白痴。变量[0]和变量[1]中的值始终存在。但这不就是创建一个新数组而不将数据移动到其他字符串中吗?@CryptoJones是的,它正在创建一个包含两个字符串(名称和分数)的新字符串数组,这就是你想要的。@CryptoJones-我猜
split
返回原始字符串的子字符串,实际上不移动任何字符数据。但你不应该在意。字符串对象在Java中是不可变的,它们的内部数据对您的代码来说是不可访问的,因此它不会对您以后的操作产生任何影响。
本身没有任何特殊意义。安全和逃避它永远不会有任何伤害/“{1:2}/是冒号有特殊含义的情况…@TraderJoeChicago:不,它没有。您可能正在谈论的
a{1,2}
a
1或2次匹配。冒号本身没有任何特殊意义。如果你有这样的东西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]));
  }