Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将包含数字的字符串解析(转换)为数字类型_Java_String_Parsing_Type Conversion_Converter - Fatal编程技术网

Java 将包含数字的字符串解析(转换)为数字类型

Java 将包含数字的字符串解析(转换)为数字类型,java,string,parsing,type-conversion,converter,Java,String,Parsing,Type Conversion,Converter,java中从文本中提取数字并对其进行解析的最佳实践是什么 例如: String s = "Availability in 20 days"; 请不要仅仅停留在示例上,我正在寻找一个好的通用实践和场景 谢谢。使用正则表达式: Pattern p = Pattern.compile("-?\\d+"); Matcher m = p.matcher("Availability in 20 days"); while (m.find()) { int number = Integer.parseI

java中从文本中提取数字并对其进行解析的最佳实践是什么

例如:

String s = "Availability in 20 days";
请不要仅仅停留在示例上,我正在寻找一个好的通用实践和场景


谢谢。

使用正则表达式:

Pattern p = Pattern.compile("-?\\d+");
Matcher m = p.matcher("Availability in 20 days");
while (m.find()) {
  int number = Integer.parseInt(m.group());
  ...
}

regex+replaceAll怎么样

代码:

String after = str.replaceAll("\\D+", "");

我不确定最佳实践是什么,但我会用一种方法来实现这一点,如本堆栈溢出问题中所述


我不确定您想做什么,但以下是一些可能对您有所帮助的解决方案:

  • 列表项使用.indexOf和.substring查找字符串中的数字

    • 例如:

      String s;
      String str = new String("1 sentence containing 5 words and 3 numbers.");
      ArrayList<Integer> integers = new ArrayList<Integer>();
      for (int i = 0; i <= 9; i++) {
          int start = 0;
          while (start != -1) {
              String sub = str.substring(start);
              int x = sub.indexOf(i);
              if (x != -1) {
                  s = sub.substring(x, x+1);
                  integers.add(Integer.parseInt(s));
                  start = x;
              } else {
                  //number not found
                  start = -1;
              }
          }
      }
      
      字符串s;
      String str=新字符串(“1个包含5个单词和3个数字的句子”);
      ArrayList整数=新的ArrayList();
      
      对于(int i=0;i如果有多个数字

      String[] after = str.replaceAll("\\D+", " ").split("\\s+");
      

      如果输入为“数字134第二”那么你想要什么样的输出呢?我在想可能是一组数字。但我宁愿忽略数字,坚持下去text@kidwon请继续并接受答案。或者,如果您能够想出一些可以帮助社区的最佳做法,请输入您自己的答案并接受。答案必须是
      “\\D+”
      String[] after = str.replaceAll("\\D+", " ").split("\\s+");