如何获得字符串中括号之类的字符,即“(“”)“?

时间:2019-02-19 13:43:11

标签: java string

下面是三个字符串。每个字符串在方括号内都有一些字符。我想将括号内的那些字符保存在其他变量中。有人可以建议这样做的可能方法吗?

fun randomAlphaNumericString(@IntRange(from = 1, to = 62) lenght: Int): String {
    val alphaNumeric = ('a'..'z') + ('A'..'Z') + ('0'..'9')
    return alphaNumeric.shuffled().take(lenght).joinToString("")
}

4 个答案:

答案 0 :(得分:2)

您可以使用indexOf()。首先,找到'('和')'的索引,然后使用substring()。像这样:

int start = myString.indexOf('(');
int end = myString.indexOf(')');
String result = myString.substring(start+1, end); 
//start+1 because we don't want the '('

答案 1 :(得分:2)

使用正则表达式:

String a = "MountainBlues(MB)";
Matcher matcher = Pattern.compile("\\((.+)\\)").matcher(a);
matcher.find();
System.out.println(matcher.group(1));

打印MB

答案 2 :(得分:1)

String insideBrackets(String input){
    String result = "";
    boolean bracket = false;
    for(int i = 0: i < input.length(); i++){
        if(!bracket && input.charAt(i) == '('){
            bracket = true;
        }
        if(bracket && input.charAt(i) == ')'){
            bracket = false;
        }
        if(bracket){
            result += input.charAt(i);
        }
    }
    return result;
}

我认为这应该可行。如果它不能立即告诉我

答案 3 :(得分:0)

您可以为此使用正则表达式:

Pattern p = Pattern.compile(".*(\\(.*\\)).*");
Matcher m = p.matcher("mytext(with)parentheses");

if(m.matches()) {
    String inner = m.group(1); // now inner contains "(with)" (without quotes)
    //...
}