我知道可能有其他方法可以解决这个问题,但我想尝试继续这种方式,我正在尝试使用字符串创建一个简单的列表,拆分为数组,并且我正在尝试获取输出为:
[A,B,C,D,E,F,G,H]
我正在使用带有键的HashMap放入数组,然后使用键“mode”从中获取数组列表
目前,我得到的输出是“[模式,A,B,C,D,E,F,G,H]”但我想省略结果中的键,但是我不想只需在输出上执行.split(“mode,”), 我想知道是否有一种方法可以改变原始字符串:
String test =“mode,A,B,C,D,E,F,G,H”;
所以我可以得到一个输出:
[A,B,C,D,E,F,G,H]
而不是:
[模式,A,B,C,D,E,F,G,H]
我真的想做什么..但是有同样的问题,我想用正则表达式来解决这个问题,这基本上是我从另一个人的代码中得到的想法 - 我对这里的正则表达式模式感到困惑,如果有人可以在模式的开头解释?< = ,这会有帮助
public class Main {
static final Map<String, LinkedList<String>> Modes = new HashMap<String, LinkedList<String>>();
private final Pattern SET_DROPDN=Pattern.compile("(?<=\\s{0,10}set\\s{1,10}the\\s{0,10})(\\w+)\\s+(\\w+)", Pattern.CASE_INSENSITIVE);
String test = "mode,A,B,C,D,E,F,G";
public static void main(String[] args) {
Main main = new Main();
main.test(" set the mode E"); //
}
public void test(String s)
{
Matcher matcher = SET_DROPDN.matcher(s);
if(matcher.find())
{
String arg1 = matcher.group(1);
System.out.println("mx.group(1) = " + arg1);
String arg2 = matcher.group(2);
System.out.println("mx.group(2) = " + arg2);
for(String st:test.split(","))
{
Modes.put(st, new LinkedList<String>(Arrays.asList(test.split(","))));
}
List<String> vals = Modes.get(arg1);
System.out.println("vals = " + vals);
int idx = 0;
for(String sg:vals)
{
if(sg.equals(arg2))
{
break; //break out of this loop
}
idx++;
}
System.out.println("Index for element = " + idx);
}
}
}
主要问题是我希望'A'的idx值为0而'E'的idx值应为4 - 但是'模式'的idx值为0
答案 0 :(得分:1)
使用list.remove(0)从列表中删除第一个元素
List<String> vals = Modes.get("mode");
vals.remove(0);
System.out.println(vals);
使用此代码并检查输出
String test = "mode,A,B,C,D,E,F,G,H";
test = test.replaceAll("mode,", "");
System.out.println(test);
答案 1 :(得分:0)
你也可以在guava库中使用filter方法过滤掉任何值..在这种情况下,它可以作为
List<String> filteredList = Lists.newArrayList(Collections2.filter(Arrays.asList(test.split(",")), Predicates.containsPattern("^\\w{1,1}$")));
这意味着它会将字符串拆分为列表并过滤掉长度大于1的任何单词。您可以调整模式以过滤掉任何内容。
答案 2 :(得分:0)
另一种方法是删除它之前的第一个元素和逗号:
String test = "mode,A,B,C,D,E,F,G,H";
int firstComma = test.indexOf(',');
String substring = test.substring(firstComma + 1);
System.out.println(substring); // this is the result