weixin_39813541
四次元口袋
2019-07-24 17:32
采纳率: 0%
浏览 1.9k

如何在 Java 中分割字符串?

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • qq_23126581
    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{
           输出异常或者不含有"-"字符
    }
    
    
    点赞 评论
  • qq_38243173
    星空下的西瓜地 2019-07-24 17:55
            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);
            }
    
    点赞 评论
  • weixin_38166411
    weixin_38166411 2019-07-25 10:17

    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

    点赞 评论
  • weixin_38166435
    weixin_38166435 2019-07-25 10:24

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

    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
    
    点赞 评论
  • weixin_38166163
    weixin_38166163 2019-07-25 10:31
    String[] result = yourString.split("-");if (result.length != 2) 
         throw new IllegalArgumentException("String not in correct format");
    

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

    点赞 评论
  • weixin_38166347
    weixin_38166347 2019-07-25 10:37

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

    点赞 评论
  • u013946444
    dy9375479 2019-07-25 11:05

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

    点赞 评论

相关推荐