[java] 자바에서 문자 c까지 문자열에서 하위 문자열을 얻는 방법은 무엇입니까?

문자열이 있습니다 (기본적으로 명명 규칙을 따르는 파일 이름) abc.def.ghi

첫 번째 .(즉, 점) 앞에 부분 문자열을 추출하고 싶습니다.

Java doc api에서 String에서 메서드를 찾을 수없는 것 같습니다.
내가 뭔가를 놓치고 있습니까? 어떻게하나요?



답변

보고 String.indexOfString.substring.

에 대해 -1을 확인하십시오 indexOf.


답변

받아 들여지는 대답은 정확하지만 사용 방법을 알려주지 않습니다. 이것이 indexOf 및 하위 문자열 함수를 함께 사용하는 방법입니다.

String filename = "abc.def.ghi";     // full file name
int iend = filename.indexOf("."); //this finds the first occurrence of "." 
//in string thus giving you the index of where it is in the string

// Now iend can be -1, if lets say the string had no "." at all in it i.e. no "." is found. 
//So check and account for it.

String subString;
if (iend != -1)
{
    subString= filename.substring(0 , iend); //this will give abc
}


답변

문자열을 나눌 수 있습니다 ..

public String[] split(String regex)

java.lang.String.split은 구분 기호의 정규식 값을 사용합니다. 기본적으로 이렇게 …

String filename = "abc.def.ghi";     // full file name
String[] parts = filename.split("\\."); // String array, each element is text between dots

String beforeFirstDot = parts[0];    // Text before the first dot

물론 이것은 명확성을 위해 여러 줄로 나뉩니다. 다음과 같이 쓸 수 있습니다.

String beforeFirstDot = filename.split("\\.")[0];


답변

프로젝트에서 이미 commons-lang을 사용하는 경우 StringUtils는 이러한 목적을위한 좋은 방법을 제공합니다.

String filename = "abc.def.ghi";

String start = StringUtils.substringBefore(filename, "."); // returns "abc"

javadoc [2.6] [3.1] 참조


답변

또는 다음과 같은 것을 시도 할 수 있습니다.

"abc.def.ghi".substring(0,"abc.def.ghi".indexOf(c)-1);


답변

정규식을 사용하는 것은 어떻습니까?

String firstWord = filename.replaceAll("\\..*","")

이렇게하면 첫 번째 점부터 끝까지 모든 것이 “”로 바뀝니다 (즉, 지우고 원하는 내용을 남깁니다).

다음은 테스트입니다.

System.out.println("abc.def.hij".replaceAll("\\..*", "");

산출:

abc


답변

java.lang.String에서는 char / string의 첫 번째 인덱스를 반환하는 indexOf ()와 같은 메서드를 얻을 수 있습니다. 및 lstIndexOf : String / char의 마지막 인덱스를 반환합니다.

Java Doc에서 :

  public int indexOf(int ch)
  public int indexOf(String str)

이 문자열 내 에서 지정된 문자 가 처음 나타나는 인덱스를 반환합니다 .