2013-05-17 1 views
-1

문자열에서 정수, 정수 및 복식을 분리하려고합니다. 문자열은 텍스트 상자에 입력되며 세 가지 모두를 포함 할 수 있습니다. (예 : 안녕하세요 13 94 3,2 6.4 안녕) 나는 그들을 나누고 그들을 요약하고 싶습니다. 그런 다음 레이블에 표시하려고합니다. IndexOf()를 사용하여 문자열에서 두 개의 문자열, 두 개 및 정수를 분할합니다.

그래서 레이블은 말을한다 : 문자열 : 안녕하세요 지능 안녕 : 107 더블 : 9,6

사람이 저를 진행받을 수 있습니까? 분할 기능을 사용할 수 없습니다.

+2

소수점으로 쉼표와 마침표를 모두 사용하는 것처럼 보입니다. – maba

+2

시도해보십시오. 문자열의 문자를 반복하고 공백에 도달 할 때마다 현재 단어를 끝냅니다. 그런 다음 현재 단어가 double, int 또는 문자열인지 확인하십시오. –

+0

문자를 반복하고 정규 표현식을 사용하여 정수 [? 0-9] *, double? [0-9] * \.? [0-9] * 및 문자열? [a-zA-Z \ s] – Jack

답변

1

글쎄, 쪼개짐없이 당신은 당신이 읽고있는 글자를 통해 약탈하고 탐지 할 수 있습니다. 글자, 문자열, 점 또는 쉼표가 두 개인 경우. 그리고 공간을 찾을 때마다이 탐지를 재설정하십시오. 그게 전부 네가 필요한거야.

감사

+0

루프를 통해 의미 : – Jack

+0

팁 주셔서 감사합니다, 나는 지금 갈 수있어! – Robin

0

경우에만 방법은 현재 로케일에 따라 소수점을 지정할 수 있다면, 우아하게이 문제를 해결하기 위해 Scanner를 사용할 수있다 : 사실

Scanner sc = new Scanner(inputString); 

while (sc.hasNext()) { 
    if (sc.hasNextInt()) { 
     // It is an integer 
     sc.nextInt(); 
    } else if (sc.hasNextDouble()) { 
     // It is a double 
     sc.nextDouble(); 
    } else { 
     // Neither, so treat it as string 
     sc.next(); 
    } 
} 

Scanner 클래스는 많은 수 있습니다 double을 구성하는 더 많은 융통성. 번호 구문과 관련하여 스캐너 클래스의 문서에서 the grammar을 확인하십시오.

토큰은 공백으로 구분해야합니다 (\p{javaWhitespace}에 정의 된대로). 다른 구분 기호를 정의 할 수도 있지만, 구분 기호를 구성하는 항목에 대한 명확한 정의가 필요합니다.

,.을 소수 구분 기호로 동시에 사용하는 것은 실제로별로 의미가 없습니다. 345,234은 숫자가 수천 수만 또는 수백 수의 숫자인지 여부가 명확하지 않은 예제 중 하나입니다. 사용자는 시스템이 켜져있는 Locale에 적절한 소수 구분 기호와 천 단위 구분 기호를 사용해야합니다.

+0

독일과 같이 일부 국가에서는 소수점 대신 쉼표를 사용합니다. 따라서 필요가있을 수 있습니다. – Jack

+0

@Jack : 필요에 대해서는 동의하지만 ','및 '.'을 같은 의미 (소수점)로 동시에 사용하는 것에 대해서는 동의하지 않습니다. – nhahtdh