在Java中将字符串转换为整数

3
我有一个包含整型值的字符串。我只想从字符串中提取整数值并打印出来。
String str="No. of Days : 365";
String daysWithSplChar = str.replaceAll("[a-z][A-Z]","").trim();
char[] ch = daysWithSplChar.toCharArray();
StringBuffer stb = new StringBuffer();
for(char c : ch)
{
  if(c >= '0' && c <= '9')
   {
      stb.append(c);
   }
}

int days = Integer.ParseInt(stb.toString());

有没有比这更好的方法。请告诉我。


可能是重复的问题:如何在Java中将字符串转换为整数? - Luiggi Mendoza
这可能会引起您的兴趣:https://dev59.com/lGYr5IYBdhLWcg3wuciw - squiguy
在JAVA中将字符串转换为整数的最佳方法https://dev59.com/im035IYBdhLWcg3wKsua#5585800 - Ahmed Z.
看起来@LuiggiMendoza已经知道如何获取该值了。 - squiguy
4个回答

9
尝试使用String.replaceAll方法。
    String str = "No. of Days : 365";
    str = str.replaceAll(".*?(\\d+).*", "$1");
    System.out.println(str);

您将获得以下内容

365

@AndroidKiller,@psr $1 = 第一个捕获组(即一对括号) - John Dvorak
用组1中的表达式替换所有内容。 - Evgeniy Dorofeev
答案有些问题。OP说字符串中会有一个整数,但没有说它总是在字符串的末尾。因此,如果字符串看起来像这样:"There are 365 Days",那么这个正则表达式就不会起作用。 - Adrian Shum

2

除了 @EvgeniyDorofeev 建议的那种方式之外,使用正则表达式的另一种方法更接近于您所做的:

str.replaceAll("[^0-9]","");   // give you "365"

这意味着用空字符串替换所有非0-9的字符(或者说,删除所有非数字字符)。

这意思是一样的,只是取决于个人口味哪种更舒适:

str.replaceAll("\\D","");   // give you "365"

1
甚至可以优化为str.replaceAll("\\D+", ""); - sp00m

1
Scanner in = new Scanner("Hello123").useDelimiter("[^0-9]+");
int integer = in.nextInt();

这将为您获取整数。

1
以下代码将为您提供整数值。
  String str = "No. of Days : 365";
        str = str.replaceAll(".*?(\\d+)", "$1");
        System.out.println(str);
        Integer x = Integer.valueOf(str);//365 in integer type
           System.out.println(x+1);//output 366

你的答案的关键部分与@EvgeniyDorofeev的答案完全相同。 - Adrian Shum
是的,我已经涵盖了将字符串转换为整数的部分。 Integer x = Integer.valueOf(str); int y = Integer.parseInt(str); - KhAn SaAb
显然,OP在将字符串转换为整数方面没有问题,因为他的问题中已经有一个大部分正确的int days = Integer.ParseInt(stb.toString()); - Adrian Shum
嗯,我没有看到你和他的方法有任何区别,两者都使用Integer.parseInt()。最大的区别在于提取仅包含数字的字符串,你只是从另一个答案中复制而来... - Adrian Shum
复制意味着什么?我不强迫任何人使用我的代码或接受我的答案。上面的答案只是提取整数值。我已经放置了我的转换部分,这不是那个答案。 - KhAn SaAb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接