我有一个单词列表,有4个单词,它不能包含更多4个单词只是一个例子。我想只使用其中两个词应该被忽略或删除,例如:
String planets = "Moon,Sun,Jupiter,Mars";
String[] planetsArray = planets.split(",");
int numberOfPlanets = planetsArray.length;
我得到的结果是4.如果我的列表包含多于2个单词,我如何删除其余单词?
答案 0 :(得分:1)
String planets = "Moon,Sun,Jupiter,Mars";
String[] planetsArray = planets.split(",");
if(planetsArray .length > 2){
String []newArr = new String[2];
newArr[0]=planetsArray [0];
newArr[1]=planetsArray [2];
planetsArray = newArr ;
}
答案 1 :(得分:1)
使用Arrays.asList从List
获取String
String[] planetsArray
个。
然后使用List界面的方法 - contains
,remove
,add
,...... - 在{{1}上做任何你想做的事情}。
答案 2 :(得分:1)
根据previous question的建议,您可以使用
String[] fewPlanets = new String[]{planets[0], planets[1]};
只需确保planets
数组包含2个或更多元素即可避免使用ArrayIndexOutOfBoundsException
。您可以使用length
进行检查:if (planets.length >= 2)
对于更复杂的解决方案,如果您使用的是Java 1.5或更早版本,也可以使用System.arrayCopy()
执行此操作,
int numberOfElements = 2;
String[] fewPlanets = new String[2];
System.arraycopy(planets, 0, fewPlanets, 0, numberOfElements);
或Arrays.copyOf()
如果您使用的是Java 1.6或更高版本:
int numberOfElements = 2;
String[] fewPlanets = Arrays.copyOf(planets, numberOfElements);
答案 3 :(得分:0)
如果你需要选择前2个行星,只需复制数组:
String[] newPlanetsArray = Arrays.CopyOf(planetsArray, 2);
如果需要选择2个特定的行星,可以应用以下算法:
首先,创建一个包含2个元素的新数组。然后,遍历原始数组中的元素,如果当前元素匹配,则将其添加到新数组(跟踪新数组中的当前位置以添加下一个元素)。
String[] newPlanetsArray = new String[2];
for(int i = 0, int j = 0; i < planetsArray.length; i++) {
if (planetsArray[i].equals("Jupiter") || planetsArray[i].equals("Mars")) {
newPlanetsArray[j++] = planetsArray[i];
if (j > 1)
break;
}
}
答案 4 :(得分:0)
您可以使用How to find nth occurrence of character in a string?中的提示,并避免从逗号分隔的字符串输入中读取剩余值。只需找到第二个逗号和子字符串
(当然,如果你的代码片段只是一个例子而你没有逗号分隔的输入,那么请忽略这个建议:)