>

다음 문자열 1.00 h. 를 변환하려고합니다.   1.00 로  RegEx를 사용하지만 새로운 기능이므로 도움이 필요합니다. 다음과 같이 시도했습니다

seanceLengthValue = Integer.parseInt(
currentService.getSeanceLength().replaceAll("\\D\\w+",""));


  • 답변 # 1

    첫번째공백이 아닌 문자와 일치/유지/캡처하고 표현식을 시작에 고정하십시오 :

    ^(\S+)
    
    

    regex101.com 데모참조 ( Java )  백 슬래시를 피해야 ^(\\S+) 가됩니다.  효과적으로).

  • 답변 # 2

    간단하게 사용할 수 있습니다 :

    seanceLengthValue = Double.parseDouble(
                currentService.getSeanceLength().replaceAll(" [a-zA-Z]", "");
    
    

    여기서, 우리는 모든 알파벳과 공백을 "" 로 바꿉니다. . 또한 결과 문자열은double이므로 Double.parseDouble() 를 사용해야합니다.  

  • 답변 # 3

    이것이 당신이 할 수있는 방법입니다

    String str = "1.00 h";
    Pattern p = Pattern.compile("^(\\S+)");
    Matcher m = p.matcher(str);
    m.find();
    Log.i("Findings", "value is >>" + m.group(0) + "<<");
    
    

    이것은 공백 앞에있는 모든 것을 줄 것입니다.

    이제 구문 분석 할 때 부동 소수점 또는 이중 소수점으로 구문 분석해야합니다. 부동 소수점 값이 있습니다.

    seanceLengthValue = Float.parseFloat(m.group(0));
    
    

    참고 :공백이 여러 개인 경우 여전히 첫 번째 항목 만 제공합니다.

    예를 들어;문자열이 "1.00 h 2.00 f"인 경우;"1.00"만 제공합니다.

  • 답변 # 4

    이 패턴을 사용해보십시오 : (\d*\.\d+|\d+)

    대체를 사용하여 다양한 유형의 10 진수 형식과 일치시킬 수 있습니다 :

    \d*\.\d+  0 자리 이상의 숫자와 일치합니다. 문자 그대로 \d  그리고 하나 이상의 숫자 \. 이므로 1.0, .01 등과 일치합니다.

    \d+  -소수점 구분 기호가있는 경우 하나 이상의 숫자와 일치합니다.

    데모

    \d+

관련 자료

  • 이전 javascript - 선택 상자를 선택한 후 SQL 데이터를로드 하시겠습니까?
  • 다음 python - 분류기 모델에 단일 트윗을 공급하는 방법은 무엇입니까?