【问题标题】:How can I get multiple characters from a string?如何从字符串中获取多个字符?
【发布时间】:2011-09-27 13:04:07
【问题描述】:

我正在尝试从数字列表中获取第 5、第 6 和第 7 位数字。

例如我想从变量dateofbirth 中取出年份,并将其另存为一个名为dob 的单独变量,作为int

这是我所拥有的:

int dateofbirth = 17031989
String s = Integer.toString(dateofbirth);
int dob = s.charAt(5);

我必须在s.charAt 之后的括号中输入什么才能连续获得几位数字?

【问题讨论】:

  • 只是一般注意事项:以您提供的形式将出生日期存储为整数是完全错误的。将其存储为字符串、Date 对象、自某个开始日期以来的天数或任何有意义的内容。但是不要使用需要在某个基数中进行字符串格式化才能有意义的数字。

标签: java string char


【解决方案1】:

不需要字符串转换:

int dateofbirth = 17031989;
System.out.println(dateofbirth%10000); //1989

如果您确实想将其作为字符串进行,那么substring() 方法将是您的朋友。您还需要使用Integer.parseInt() 将字符串转换回整数。将字符值作为整数将为您提供该字符的 ASCII 值,而不是表示该字符的整数!

【讨论】:

  • 很好地使用了 mod 运算符。
【解决方案2】:

你想使用String.substring(未经测试):

int dateofbirth = 17031989;
String s = Integer.toString(dateofbirth);
String year = s.substring(4, 8);
int yearInt = Integer.parseInt(year);

【讨论】:

    【解决方案3】:

    s.substring(5) 将为您提供从索引5 开始的所有内容。您还可以提供第二个参数来指示您希望子字符串在哪里结束。

    【讨论】:

      【解决方案4】:

      如果您正在处理日期,您可以使用 SimpleDateFormat 和 Calendar 来提取年份:

      SimpleDateFormat formatter = new SimpleDateFormat("ddMMyyyy"); 
      Calendar cal = Calendar.getInstance();
      cal.setTime(formatter.parse(Integer.toString(dateofbirth)));
      int year = cal.get(Calendar.YEAR);
      

      【讨论】:

        【解决方案5】:

        你会的:

        String s = String.valueOf(dateofbirth);
        int yourInt = Integer.parseInt(s.substring(startIndex,length))
        

        【讨论】:

          【解决方案6】:
          【解决方案7】:

          由于以下几个原因,这种方法不起作用:

          1. s.charAt(5) 将为您提供第 6 个字符(不是 9)的 ASCII 码。
          2. 没有办法获取多个字符

          如果你想从这个字符串中提取 1989,你应该使用子字符串,然后使用 Integer.valueOf() 将该字符串转换为整数

          【讨论】:

            【解决方案8】:
            Integer.parseInt(s.subString(4))
            

            【讨论】:

              【解决方案9】:

              来自 JRE 文档:getChars

              【讨论】:

              • 再写一两句话怎么样?
              • 因为如果我能用四个字回答一个问题,用六个不是改进。发帖人可能会问的所有其他问题,他都可以在链接中找到。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多