programing

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

nasanasas 2020. 9. 4. 07:32
반응형

자바에서 문자 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)

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


다음은 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;
}

참고URL : https://stackoverflow.com/questions/7683448/in-java-how-to-get-substring-from-a-string-till-a-character-c

반응형