Java Arrays.asList从字符串创建数组,然后省略数组中的第一个单词
我知道可能还有其他方法可以解决这个问题,但我想尝试并继续这样做,我尝试用一个字符串创建一个简单的列表,拆分为一个数组,并尝试获得如下输出: [A、B、C、D、E、F、G、H] 我使用一个带有键的HashMap放入数组,然后使用键“mode”从中获取数组列表 目前,我得到的输出是“[mode,A,B,C,D,E,F,G,H]”,但我想从结果中省略键,但我不想只在输出上执行分割(“mode”), 我想知道是否有办法更改原始字符串: String test=“模式A、B、C、D、E、F、G、H” 因此,我可以得到如下输出: [A、B、C、D、E、F、G、H] 而不是: [模式A、B、C、D、E、F、G、H] 我真正想做的是。。但也有同样的问题,我想解决正则表达式的问题,这基本上是我从另一个人的代码中得到的想法-我对这里的正则表达式模式感到困惑,如果有人能解释?使用list.remove(0)从列表中删除第一个元素Java Arrays.asList从字符串创建数组,然后省略数组中的第一个单词,java,arrays,Java,Arrays,我知道可能还有其他方法可以解决这个问题,但我想尝试并继续这样做,我尝试用一个字符串创建一个简单的列表,拆分为一个数组,并尝试获得如下输出: [A、B、C、D、E、F、G、H] 我使用一个带有键的HashMap放入数组,然后使用键“mode”从中获取数组列表 目前,我得到的输出是“[mode,A,B,C,D,E,F,G,H]”,但我想从结果中省略键,但我不想只在输出上执行分割(“mode”), 我想知道是否有办法更改原始字符串: String test=“模式A、B、C、D、E、F、G、H” 因此
List<String> vals = Modes.get("mode");
vals.remove(0);
System.out.println(vals);
您还可以使用guava库中的filter方法过滤掉任何值。。在这种情况下,可以按照以下步骤进行:
List<String> filteredList = Lists.newArrayList(Collections2.filter(Arrays.asList(test.split(",")), Predicates.containsPattern("^\\w{1,1}$")));
List-filteredList=Lists.newArrayList(Collections2.filter(Arrays.asList(test.split(“,”),Predicates.containsPattern(“^\\w{1,1}$”));
这意味着它将拆分字符串以列出并过滤掉任何长度超过1的单词。您可以调整模式以过滤掉任何内容。另一种方法是删除第一个元素和它前面的逗号:
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
似乎是,如果VAL保证其第一项是您不想要的,则可以使用remove(0)函数删除第一项。加入一些验证以确保它是您想要删除的,viola
(?感谢boxed_uuu_;,我应该尝试Javadoc,我搜索了错误的源字符串test=“A,B,C,D,E,F,G,mode”)实际上是我问题的解决方案,但我想我会使用下面的答案(因为它确实回答了我最初的问题)好的,好的。这是可行的,但是有没有办法修改原始字符串,使其不显示?我尝试了类似字符串测试=“mode=[A,B,C,D,E,F,G,H]”的方法,但这只给出了null。也许Java正则表达式有一种方法……我必须研究一下。。
List<String> filteredList = Lists.newArrayList(Collections2.filter(Arrays.asList(test.split(",")), Predicates.containsPattern("^\\w{1,1}$")));
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