자바에서 문자 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)
이 문자열 내 에서 지정된 문자 가 처음 나타나는 인덱스를 반환합니다 .
다음은 String
주어진 문자 목록까지 의 부분 문자열을 반환하는 코드입니다 .
/**
* Return a substring of the given original string until the first appearance
* of any of the given characters.
* <p>
* e.g. Original "ab&cd-ef&gh"
* 1. Separators {'&', '-'}
* Result: "ab"
* 2. Separators {'~', '-'}
* Result: "ab&cd"
* 3. Separators {'~', '='}
* Result: "ab&cd-ef&gh"
*
* @param original the original string
* @param characters the separators until the substring to be considered
* @return the substring or the original string of no separator exists
*/
public static String substringFirstOf(String original, List<Character> characters) {
return characters.stream()
.map(original::indexOf)
.filter(min -> min > 0)
.reduce(Integer::min)
.map(position -> original.substring(0, position))
.orElse(original);
}
도움이 될 수 있습니다.
public static String getCorporateID(String fileName) {
String corporateId = null;
try {
corporateId = fileName.substring(0, fileName.indexOf("_"));
// System.out.println(new Date() + ": " + "Corporate:
// "+corporateId);
return corporateId;
} catch (Exception e) {
corporateId = null;
e.printStackTrace();
}
return corporateId;
}
'programing' 카테고리의 다른 글
오류-데이터베이스가 사용 중이므로 독점 액세스를 얻을 수 없습니다. (0) | 2020.09.04 |
---|---|
SourceTree에서 푸시를 시도 할 때 "태그가 이미 있기 때문에 업데이트가 거부되었습니다." (0) | 2020.09.04 |
정규식을 사용하여 문자열에서 모든 YouTube 동영상 ID를 찾으려면 어떻게하나요? (0) | 2020.09.04 |
양식 제출시 PHP $ _POST 배열이 비어 있음 (0) | 2020.09.04 |
NSDate 시작일과 종료일 (0) | 2020.09.04 |