在Java中,删除字符串的许多字符

时间:2015-04-28 17:35:42

标签: java string substring

在java中,我想删除字符串的字符 - 这是我的源代码

import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
    public static void main(String[] args) throws Exception {
        // Let's challenge in my favorite language!!
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = br.readLine();
        Integer n = line.length();
        for(int i=1;i<=n;i++){
            if(i%2==0)
            {
                line = line.substring(i);
            }   
        }
        System.out.println(line);
    }
}  

我输入了一个字符串

  

PXaeiTzVap

然后我想要结果

  

御匾

我该怎么做?

5 个答案:

答案 0 :(得分:1)

据我所知,你想删除每一个第二个角色。

我会使用for循环:

String out = "";
for(int i = 0; i < line.length(); i += 2)
{
    out += line.charAt(i);
}
System.out.println(out);

请注意,我将2添加到i。所以它应该得到char 0,2,4,6,8。

因此,它将导致“Paiza”。

答案 1 :(得分:0)

您可以向后循环遍历String,并执行String添加或使用StringBuilder

    String line = "PXaeiTzVap";
    StringBuilder sb = new StringBuilder(line);
    for(int i = line.length() - 1; i > 0; i--){
        if( i%2 == 0 )
        {
           sb.delete(i-1, i);
        }   
    }
    System.out.println(sb);

这将打印出 Paizap

答案 2 :(得分:0)

public String removeEveryOtherChar(String line) {
    String result = "";
    for (int i = 1; i < line.length(); i++) {
        if (i % 2 == 0) {
            result += String.valueOf(line.charAt(i));
        }
    }
    return result;
}

答案 3 :(得分:0)

试试这个:

StringBuilder output = new StringBuilder(line.length()/2);
for(int i = 0; i < line.length(); i+= 2) {
    out.append(line.charAt(i));
}
System.out.println(output.toString());

答案 4 :(得分:0)

您所要做的就是使用for循环迭代字符串的每个字符。对于每个字符,使用Character.toLowerCase(char a)方法转换为小写,并与原始字符进行比较。如果它们不相等则意味着那里的字母必须是大写字母,因此必须删除。通过获取该char之前的所有字符的子字符串并在该字符之后删除它并添加子字符串以使用排除不需要的字符的新字符串对象设置字符串。请务必执行i--,因为字符串的大小会发生变化,并且您不想跳过现在位于您刚删除的字符的字符。

for(int i = 0; i < str.length(); i++)
{
    if( Character.toLowerCase(str.charAt(i)) != str.charAt(i) )
    {
        str = str.substring(0,i) + str.substring(i+1);
        i--;
    }
}