[java] 두 문자 사이의 문자열을 얻는 방법?

나는 문자열이 있습니다.

String s = "test string (67)";

(와) 사이의 문자열 인 67 번을 얻고 싶습니다.

누구 든지이 방법을 알려주시겠습니까?



답변

아마 정말 깔끔한 RegExp가있을 것입니다.하지만 저는 그 영역에서 멍청한 사람입니다.

String s = "test string (67)";

s = s.substring(s.indexOf("(") + 1);
s = s.substring(0, s.indexOf(")"));

System.out.println(s);


답변

이 문제에 대해 indexOf를 수행 할 필요가없는 매우 유용한 솔루션은 Apache Commons 라이브러리를 사용하는 것입니다.

 StringUtils.substringBetween(s, "(", ")");

이 메서드는 indexOf 닫는 문자열을 찾아서 쉽지 않은 닫는 문자열이 여러 번 발생하더라도 처리 할 수 ​​있습니다.

https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.4 에서이 라이브러리를 다운로드 할 수 있습니다.


답변

이렇게 해봐

String s="test string(67)";
String requiredString = s.substring(s.indexOf("(") + 1, s.indexOf(")"));

하위 문자열에 대한 메서드의 서명은 다음과 같습니다.

s.substring(int start, int end);


답변

정규식 사용 :

 String s = "test string (67)";
 Pattern p = Pattern.compile("\\(.*?\\)");
 Matcher m = p.matcher(s);
 if(m.find())
    System.out.println(m.group().subSequence(1, m.group().length()-1));


답변

Java는 정규 표현식을 지원 하지만 실제로 일치를 추출하는 데 사용하려는 경우 다소 번거 롭습니다. 예제에서 원하는 문자열을 얻는 가장 쉬운 방법은 String클래스의 replaceAll메서드 에서 정규식 지원을 사용하는 것입니다.

String x = "test string (67)".replaceAll(".*\\(|\\).*", "");
// x is now the String "67"

이것은 단순히 모든 내용이 삭제 그대로 – – 및 – 포함하는 제 (및에 대해 동일한 )이후 모든 것을. 이것은 괄호 사이에 물건을 남깁니다.

그러나 그 결과는 여전히 String. 대신 정수 결과를 원하면 다른 변환을 수행해야합니다.

int n = Integer.parseInt(x);
// n is now the integer 67


답변

한 줄로 다음을 제안합니다.

String input = "test string (67)";
input = input.subString(input.indexOf("(")+1, input.lastIndexOf(")"));
System.out.println(input);`


답변

String s = "test string (67)";

int start = 0; // '(' position in string
int end = 0; // ')' position in string
for(int i = 0; i < s.length(); i++) {
    if(s.charAt(i) == '(') // Looking for '(' position in string
       start = i;
    else if(s.charAt(i) == ')') // Looking for ')' position in  string
       end = i;
}
String number = s.substring(start+1, end); // you take value between start and end