【问题标题】:Split Java String into Two String using delimiter使用分隔符将 Java 字符串拆分为两个字符串
【发布时间】:2011-10-16 21:15:17
【问题描述】:

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

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

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

【问题讨论】:

  • 你看split()的返回值了吗?
  • 没关系,我是个白痴。这些值一直存在于变量 [0] 和变量 [1] 中。

标签: java regex string


【解决方案1】:

split 函数适用于此:

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

【讨论】:

  • 如果你有这样的 a:1:2 name = a:1?!?@
  • 它将返回一个字符串数组,并能够检索第一个和第二个值
  • 此代码仅在您的分数不包含冒号时有效。请务必在您的代码中考虑到这一点。
【解决方案2】:

您需要查看正则表达式:

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

或者你也可以使用 StringTokenizer。

【讨论】:

  • : 本身没有任何特殊含义
  • 为了安全并逃脱它永远不会受到伤害... /a{1:2}/ 是冒号具有特殊含义的情况...
  • @TraderJoeChicago:不,它没有。您可能在谈论与 a 匹配 1 或 2 次的 a{1,2}。冒号本身没有任何特殊含义。
【解决方案3】:

用途:

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

【讨论】:

  • 但这不只是创建一个新数组而不将数据移动到其他字符串吗?
  • @CryptoJones 是的,它正在创建一个包含 2 个字符串、名称和分数的新字符串数组,这正是您想要的。
  • @CryptoJones - 我的猜测是split 返回原始字符串的子字符串,实际上并没有移动任何字符数据。但你不应该在意。字符串对象在 Java 中是不可变的,并且它们的内部数据无法访问您的代码,因此它不会对您以后的操作产生任何影响。
【解决方案4】:
String row = "name:12345";
String[] columns = row.split(":");
assert columns.length == 2;
String name = columns[0];
int score = Integer.parseInt(columns[1]);

【讨论】:

    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

      $ 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 拆分

      2
      a
      b
      

      【讨论】:

        【解决方案7】:

        如果你有这样的 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]));
          }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-28
          • 2018-01-06
          • 2020-06-18
          • 2016-04-06
          • 1970-01-01
          • 2012-09-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多