2014-04-19 2 views
0

나는이 같은 문자열이 있다고 가정을 :사이의 문자열 얻는 방법 ":"

"(...) 예 :. 안녕하세요 세계 설명 : 여기에 단어와 과 긴 텍스트이며, .. ponctuation이 내가 필요로하는 부분을 내가 필요하지 않습니다이 일부입니다. 예제의 끝 (...) "

가 어떻게에만이 문자열받을 수 있나요 :

여기

인을 긴 텍스트, 와우 rds 및 ponctuation. 이것이 내가 필요한 부분이다. 내가 쓴

(...)는 문자열의 계속, 나는 긴 텍스트를 처리하지만,이 경우에는 단지 설명을 얻고 싶은거야입니다. 다음 이전과 단어 (들) :

나는 "설명"사이에있는 모든 (즉, 점, 쉼표 등)을 원하는 ":"

정확한 예 :

작업 제목 : 자바 프로그래머 날짜 : 18/04/2014 수량 : 4 공석 직업 설명 : 소프트웨어 공장에서 시스템을 구현하고 애자일, 봄, 최대 절전 모드 및 GWT로 작업합니다. 컴퓨터 과학에서의 고등 교육. TDD 코스. 민첩한 방법론에 대한 지식, 기술 된 활동, TDD 및 BDD. 좋은 의사 소통. 참고 : 혜택 : 의료/의료 그룹, 티켓 수유, 교통 바우처 구성표 고용 : CLT (영구) 영업 시간 : 월 ~ 금, 오전 8 시부 터 오후 7시 30 분까지.

내가이 필요합니다

는 소프트웨어 공장에서 시스템을 구현 애자, 봄, 최대 절전 모드 및 GWT와 함께 작동합니다. 컴퓨터 과학에서의 고등 교육. TDD 코스. 민첩한 방법론에 대한 지식, 기술 된 활동, TDD 및 BDD. 좋은 의사 소통.

"설명 :"다음에 "참고 :"앞에 오는 하위 문자열이지만이 두 번째 단어 (참고 :)는 임의의 단어가 될 수 있습니다. 그래서 정규 표현식이 필요하지만 그게 무엇인지 모릅니다.

+0

당신이 표기하지 않고, 정확한 예를 넣을 수 있습니다 : 그룹이없는 :([^:]*):

: 그룹

? 감사. –

+0

문자열에 사용되는'substring (beginIndex, endIndex) '메소드를 사용하십시오. – Gofoboso

+0

예. 나는 이것을하고있다. 고맙습니다! – MariaH

답변

3
String original = "This is a string: Here is what you want: Maybe you want this too?"; 
int firstColon = original.indexOf(':'); 
int secondColon = original.indexOf(':', firstColon+1); 
if (secondColon != -1) { 
    String parsed = original.substring(firstColon+1, secondColon); 
} else { 
    //2 colons not found 
} 

위의 코드는 : 문자의 첫 번째 색인을 찾고 저장합니다. 그런 다음 원래 다음에 :을 찾습니다. 두 번째 콜론이 발견되면 (if 문) 문자열이 구문 분석되어 저장됩니다. String.substring은 마지막 색인을 포함하지 않고 첫 번째 색인을 포함합니다. 선행 또는 후행 공백을 없애려면 구문 분석 된 행의 끝에 .trim()을 추가하십시오. 첫 번째 콜론 만 검색하려면 다음을 사용하십시오. (이것은 문자열을 다듬습니다)

String original = "This is a string: Here is what you want: Maybe you want this too?"; 
int firstColon = original.indexOf(':'); 
if (firstColon != -1) { 
    String parsed = original.substring(firstColon+1).trim(); 
} else { 
    //One colon not found 
} 

Java에서 문자열은 변경할 수 없습니다. original.substring은 원래 문자열을 변경하지 않고 하위 문자열 문자의 새 문자열 만 반환합니다.

+0

좋습니다. 단 하나의 문제가 있습니다. 나는 두 번째 결장 앞에서 그 단어를 원하지 않습니다. 필요한 부분 문자열은 "설명 :"다음에 점으로 끝나면 원하지 않는 단어와 다음 콜론이옵니다. – MariaH

0

는이처럼 split 방법을 사용할 수 있습니다 : 분할 방법에 전달

String[] sentences = "This is a : test".split("[:]"); 

매개 변수는 정규 표현식이며, 모든 부문 문자열의 배열을 반환합니다.

예를 들어, 위의 방법은 다음과 같은 출력을 반환합니다

sentences[0] will be This is a" 
sentences[1] will " test" 
0

당신이 (< =) JDK1.6로 작업하고, 당신이 말한대로 텍스트가 될 수 있다면 , 잠재적 인 메모리 문제를 피하기 위해 substring()을 사용하지 않을 것입니다.

정규식 사이에 물건을 얻을 간단이 : : (?<=:)[^:]*

관련 문제