Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取字符串中位于括号等字符内的部分,即;("")";?_Java_String - Fatal编程技术网

Java 如何获取字符串中位于括号等字符内的部分,即;("")";?

Java 如何获取字符串中位于括号等字符内的部分,即;("")";?,java,string,Java,String,下面是三个字符串。每个字符串的括号内都有一些字符。我想将括号内的字符保存在其他变量中。有人能提出可能的方法吗 String name_and_code1 = "MountainBlues(MB)"; String name_and_code2 = "Rock(RoRo)Roll"; String name_and_code3 = "(TFT)TitForTat"; 您可以使用indexOf()。首先,找到“(”和“)”的索引,然后使用substring()。比如: int start = m

下面是三个字符串。每个字符串的括号内都有一些字符。我想将括号内的字符保存在其他变量中。有人能提出可能的方法吗

String name_and_code1 = "MountainBlues(MB)"; 
String name_and_code2 = "Rock(RoRo)Roll";
String name_and_code3 = "(TFT)TitForTat";

您可以使用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 '('
String-insideBrackets(字符串输入){
字符串结果=”;
布尔括号=假;
对于(int i=0:i

我认为这应该行得通。如果它没有使用正则表达式立即告诉我

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

打印
MB

您可以使用正则表达式:

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)
    //...
}

查找索引并使用substringuse
indexOf
substring
或正则表达式。可能的重复项可能使用
StringBuilder
作为循环中的字符串串联将产生大量垃圾中间对象。但这闻起来像是家庭作业,我想他们还没碰过stringbuilder。idkWell如果你已经给他们做了作业,你首先应该用正确的方法做,但是这样他们可能什么也学不到,只是复制粘贴。shrugwell that sure as hell is=true。为了进行优化,
模式可以保存在
静态
变量中正确,但不适合OP的经验级别。
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)
    //...
}