【发布时间】:2017-08-02 10:40:03
【问题描述】:
我想从字符串中提取子字符串,从__(双下划线)开始,直到找到"(双引号)或特殊字符'[](),'。
我已经有一段时间了,但无法弄清楚。
例如:输入字符串:"NAME":"__NAME"
必需的字符串:__NAME
感谢您的宝贵时间。
【问题讨论】:
-
1.找到
__2. 从该位置开始的子字符串的位置。 3.在新字符串中:找到"的位置。 4. 直到那个位置的子串
我想从字符串中提取子字符串,从__(双下划线)开始,直到找到"(双引号)或特殊字符'[](),'。
我已经有一段时间了,但无法弄清楚。
例如:输入字符串:"NAME":"__NAME"
必需的字符串:__NAME
感谢您的宝贵时间。
【问题讨论】:
__ 2. 从该位置开始的子字符串的位置。 3.在新字符串中:找到"的位置。 4. 直到那个位置的子串
您可以使用此正则表达式(__(.*?))[\"\[\]\(\),] 来获得您想要的内容:
String str = "\"NAME\":\"__NAME\"";
String regex = "(__(.*?))[\"\\[\\]\\(\\),]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
输出
__NAME
【讨论】:
你可以试试下面的代码
String input="\"NAME\":\"__NAME\"";
int startIndex=input.indexOf("__");
int lastIndex=input.length();
String output=input.substring(startIndex, (lastIndex-1));
System.out.println(output);
【讨论】:
希望此解决方案对您有所帮助:
import java.util.*;
class test
{
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
String a=s.next();
int i=a.indexOf("__");
int j=a.indexOf('"',i);
System.out.println(a.substring(i,j));
}
}
这里首先计算__的索引,然后在__之后计算"的索引。然后使用substring方法得到所需的输出。
【讨论】: