【问题标题】:String Substring intentionally remove character 0字符串子字符串故意删除字符 0
【发布时间】:2018-06-03 15:33:05
【问题描述】:

我目前正在处理一个字符串解析函数,突然我发现了这个问题。例如:

String data = "1234567890JOHN F DOE";

String ID = data.substring(0,9);
String Name = data.substring(10, 19);

我想要的 ID 的预期输出是 "1234567890" 但是 我得到的唯一字符只有"123456789""0" 被删除。

有什么函数可以代替substring(...)吗?

【问题讨论】:

标签: java android string parsing


【解决方案1】:

正如docs 中所说,substring(...) 的结束索引是输入的索引减一。你想做的是有:

String data = "1234567890JOHN F DOE";
String ID = data.substring(0,10); 
String Name = data.substring(10, 20);

输出:

ID: 1234567890

Name: JOHN F DOE

【讨论】:

    【解决方案2】:

    你得到"123456789"是因为substring(...)方法中的end参数不包含在内,所以为了得到"1234567890"你需要使用data.substring(0,10):)

    【讨论】:

      【解决方案3】:

      使用子字符串你可以简单地做: str.substring (0,10); 这是另一种方式:

       String pattern="\\d+";
          String text="1234567890JOHN F DOE";
          Pattern p=Pattern.compile(pattern);
          Matcher m=p.matcher(text);
          while (m.find()) {
              System.out.println(text.substring(m.start(), m.end()));
          }
      

      【讨论】:

        【解决方案4】:

        让我们通过代码来了解你需要这样做的 startIndex 和 endIndex :

        String data = "1234567890JOHN F DOE";
        String ID = data.substring(0,10);
        String Name = data.substring(10, 20);
            System.out.println("ID:" + ID);
            System.out.println("Name: "+  Name);
        

        输出:

        ID: 1234567890
        
        Name: JOHN F DOE
        

        【讨论】:

        • Name 的值应该是 "JOHN F DOE",而不是 "F DOE"
        • 你对我从 IDE 复制和粘贴时出错了!!并且错误已得到纠正。
        猜你喜欢
        • 2015-11-20
        • 2019-09-08
        • 1970-01-01
        • 2017-04-30
        • 2018-05-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多