2012-08-01 2 views
1

나는 String s = 'muniganesh'을 가지고 있고, s.subString(1, 2)의 값을 프린트 할 경우, 결과는 'u'입니다. 왜냐하면 자바 문자열에서 인덱스는 0부터 시작하기 때문입니다.하지만 시작하려면 문자열을 변경해야합니다. 인덱스 위치 1. 어떻게 가능합니까?문자열 인덱스를 만드는 방법 1

+0

int startIndex가 [1..s.length()] 안에 있다고 가정하면's.substring (startIndex-1, finish)'을 할 수 있습니다. 또한, String # subString의 끝에있는이 'int finish'는 1- 인덱스가됩니다. –

+0

나는 당신의 제안을 이미했습니다. 하지만 내 시나리오에 대한 해결책을 알아야합니다. – MGPJ

+0

입력 내용과 예상 출력을 보여주는 질문을 편집하여 요구 사항을보다 잘 이해하십시오. 1 개 이상의 입력/출력 샘플을 게시하는 것이 좋습니다. –

답변

3

당신은 모두 #substring (시작, 끝)는 0 기반 인덱스 (또는 당신이 그렇게 원하는 경우 인덱스를 하나의 기반) 등의 인수를 처리하기 위해 자신의 유틸리티 메소드를 작성할 수 있지만, @irrelephant 말했듯이 아니다 Java가 이러한 특수한 경우를 처리하는 방법에 익숙해 져야합니다. 첫 번째 인수는 (제로 기반)이고 두 번째 인수는 (하나는)입니다. String#substring이 유일한 예가 아니며 StringBuilder#delete도 있으며 더 있어야합니다.

가능한 동기는 단순히 추가적인 증가없이 개시 위치 길이를 추가하여 단부 위치를 산출 할 수있다. 예컨대 :

String source = "In Java world, end position index may be one-based"; 
    int indexOfP = source.indexOf('p'); 
    String result = source.substring(indexOfP, indexOfP + 8); 
    System.out.println(result); // prints 'position' 

그것은하지 최고의 예, 그리고 진정한 동기는 다를 수 있습니다,하지만이 특질에 대해 기억하는 방법이있다.

+0

끝 색인은 1부터 시작하지 않습니다. 예를 들어, 0은 합법적 인 최종 인덱스이며, 1부터 시작하는 인덱스는 아닙니다. 두 인덱스는 모두 0부터 시작하지만 끝 인덱스는 * exclusive *이지만 시작 인덱스는 포함됩니다. – Boann

0

문자열 하나 이상을 확인 인덱스는 0부터 시작

myString = myString.substring(1); // will give "uniganesh" 
0

자바 배열이나 문자열 (대부분의 다른 언어의 배열)을 시도하고 단순히 1에서 첫 번째 인덱스 또는 사용 인덱스를 사용하지 않는 string.length에 추가하고 실제로 문자열에 색인을 지정할 때 하나를 빼면됩니다.

6

당신은 정말 당신이 방법을 쓸 수하려면 :

public static String substring(String str, int beginIndex, int endIndex) { 
    return str.substring(beginIndex - 1, endIndex - 1); 
} 

을하지만 s.substring()하고 자신의 substring()을 혼합 한 오류로 하차 할 수 있기 때문에 내가보기 엔 당신이하지 않는 것이 좋습니다. Java에서 문자열을 처리하는 방식에 익숙해지면 s.substring()을 사용하십시오. 다른 많은 인기있는 언어는 Java와 같이 문자열 색인을 0에서 시작합니다.

+1

잘못된 부분은'endIndex - 1'입니다. 이 값은 1부터 시작하는 인덱스이며, beginIndex는 0부터 시작하는 인덱스입니다. –

+2

여기서 마지막 두 문장이 중요합니다 (예제는 아마도 폐기 될 수 있습니다). ** 자바가 문자열을 처리하는 방식에 익숙해지고's.substring()'을 사용하십시오. 다른 많은 인기있는 언어는 Java와 같이 0에서 문자열 인덱스를 시작합니다. ** –

+0

@LuiggiMendoza 잘못하지 않았습니다. 두 인덱스는 모두 0부터 시작하므로 0이 최종 인덱스의 올바른 값입니다. 그러나 종료 색인은 배타적이지만 시작 색인은 포괄적입니다. – Boann

0

Java 문자열 인덱스는 o 및 d에서 끝나며 최대 문자열 길이는 -1입니다.

String s = "muniganesh";

s = s.substring(1,2);// output u 


System.out.println(""+ s.substring(1)); //output String s = "muniganesh"; 
관련 문제