2013-12-10 2 views
0

데이터 세그먼트를 문자열로받는 코드를 작성하고 있습니다. 문자열의 크기는 다양하지만 항상 같은 문자로 시작하고 끝납니다 (시작 : '<s-' 끝 : '-e>'). 세그먼트의 시작과 끝 앞에 유효하지 않은 문자를 입력 할 때 사용자 오류를 방지하고 싶습니다. 예 :정규식이없는 세그먼트의 시작과 끝 부분에서 '잡음'을 테스트합니다.

"fdslkjds<s-hello-e>" 
"<s-there-e>dfsad" 
"eiend<s-john-e>dfafsd" 

정규식 라이브러리 (패턴 및 일치 항목)를 가져 와서 수행 할 수 있음을 알고 있습니다. 하지만 그 라이브러리를 사용하지 않고 이것을 시도하고 싶습니다. 그것을 할 다른 방법이 있습니까? String 라이브러리에서 찾고 있지만 필요한 정확한 방법을 찾을 수 없습니다.

+0

여기 정규식을 피하는 것은 많은 작업을 추가합니다. 왜 그들을 피하고 싶니? – aalku

+1

아니, 그것은 많은 작업을 추가하지 않습니다, @ user270349, 라이언 Carlsons 대답보세요. – Ingo

+0

@Ingo 네 말이 맞아. 나는 그것을 테스트하지 않고 노이즈 제거에 대해 생각하고 있었다. 내 실수. – aalku

답변

0

을 모자와 사람이 말하기를 :

나는 또한 당신이 코드를 직접 만들 것을 제안하지만, 당신이 귀찮게하지 않으려는 경우, 여기서 일해야 할 몇 가지 코드는 목표를 달성하려면 문자열에 대해 startsWithendsWith과 같은 함수가 충분해야합니다.

if(!userString.startsWith("<s-") || !userString.endsWith("-e>")) { 
    throw new Exception("Please do not enter invalid characters before the start and the end of the segment"); 
} 
3

StringsstartsWith()endsWith() 방법을 살펴 보시기 바랍니다. ,

String input = [your code here] 
while(!input.startsWith("<s-") || !input.endsWith("-e>")) 
{ 
    System.out.println("Error! Invalid input! Please try again:"); 
    input = [your code here] 
} 
0

당신은 문자열의 <s--e>의 위치를 ​​찾기 위해 indexOflastIndexOf을 사용하고 "노이즈"없이 적절한 문자열을 추출하는 substring를 사용할 수 있습니다.

String s = "eiend<s-john-e>dfafsd"; 
String s2 = s.substring(s.indexOf("<s-"), s.lastIndexOf("-e>") + 3); 
관련 문제