[java] 자바에서 문자 c까지 문자열에서 하위 문자열을 얻는 방법은 무엇입니까?
문자열이 있습니다 (기본적으로 명명 규칙을 따르는 파일 이름) abc.def.ghi
첫 번째 .
(즉, 점) 앞에 부분 문자열을 추출하고 싶습니다.
Java doc api에서 String에서 메서드를 찾을 수없는 것 같습니다.
내가 뭔가를 놓치고 있습니까? 어떻게하나요?
답변
보고 String.indexOf
와 String.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"
답변
또는 다음과 같은 것을 시도 할 수 있습니다.
"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)
이 문자열 내 에서 지정된 문자 가 처음 나타나는 인덱스를 반환합니다 .