对不准确的标题感到抱歉,但我不知道怎么说。
如果我的字符串看起来像这样:
1+"."+2+"abc"+3+","+12+"."
我希望得到一个只包含"引号"
之间内容的数组.
abc
,
.
我想收到上面的数组。
我怎样才能做到这一点?
注意:所有值都是随机的,只有双引号是确定的。
示例:字符串也可以如下所示:
23412+"11"+244+"11"+abc+"11"
result should be:
11
11
11
或
abc+"abc"+abcd+"abcd"
result should be:
abc
abcd
或
1+"."+2+"."+"."+"3"
result should be:
.
.
.
我希望你能提供帮助。
答案 0 :(得分:5)
答案 1 :(得分:1)
使用此正则表达式:
public static void main(String[] args) {
String s = "23412+\"11\"+244+\"11\"+abc+\"11\"\"abcd\"pqrs";
Pattern p = Pattern.compile("\"(.*?)\""); \\ lazy quantifier
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group(1));
}
}
O / P:
11
11
11
abcd
答案 2 :(得分:0)
我知道你想要正则表达式,但是如果你也可以在没有正则表达式的情况下做到这一点:
public static void main(String[] args) {
String yourString = "23412+\"11\"+244+\"11\"+abc+\"11\"";
String result = "";
String[] splitted = yourString.split("\"");
if (splitted.length > 0) {
for (int i = 1; i < splitted.length; i += 2) {
result += splitted[i] + System.lineSeparator();
}
result = result.trim();
}
System.out.println(result);
}
您可以将StringBuilder
用于长字符串。
答案 3 :(得分:0)
我认为编写一个方法并将其用作程序中的实用程序非常简单......这是一个例子:
import java.util.ArrayList;
public class Test
{
public static void main(String[] args)
{
String str = "23412+\"11\"+244+\"11\"+abc+\"11\"\"abcd\"pqrs";
int i=0;
ArrayList<String> strList = new ArrayList<String>();
while (i<str.length())
{
if(str.charAt(i) == '\"')
{
int temp = i;
do
{
i++;
}
while (str.charAt(i) != '\"');
strList.add(str.substring(temp+1, i));
}
i++;
}
for(int j=0; j<strList.size(); j++)
{
System.out.println(strList.get(j));
}
}
}
你可以改变它来返回ArrayList而不是打印它然后你有完美的工具来完成这项工作