将空格转换为下划线

时间:2014-04-22 10:52:20

标签: java arrays string char whitespace

我正在从服务器中检索一个播放器列表,之后我正在处理它(与问题无关)。这些不相关的流程仅在用户名没有空格时才有效,而是使用字符'_'而不是' '。我正在使用此代码循环遍历每个玩家名称的角色,然后检测它是否为' ',如果是,则将其替换为'_',但由于某种原因,它并不是 char[] name; for(String playerName : chatlist) { name = playerName.toCharArray(); for(int i =0; i < name.length; i++) { if(name[i] == ' ') { name[i] = '_'; } } String nameS = new String(name); System.out.println(playerName + " -> " + nameS); } 。 t完全被检测到了?

Testuser 1

用户名和输出的示例如下:

Testuser_1会输出ExampleUser One

ExampleUser_One会输出{{1}}

5 个答案:

答案 0 :(得分:6)

使用replaceAll("\\s+", "_")。这是更好的方式。 否则,你将用&#34; _&#34;替换每个空间。 (这是你想要的吗?)

答案 1 :(得分:2)

答案 2 :(得分:2)

此代码按预期工作:

private static List<String> chatlist = Arrays.asList("Mr. Who", "Dr. Me");

public static void main(String[] args) {
    for(String playerName : chatlist) {
        char[] name = playerName.toCharArray();
        for (int i = 0; i < name.length; i++) {
            if (name[i] == ' ') name[i] = '_';
        }
        String nameS = new String(name);
        System.out.println(playerName + " -> " + nameS);
    }
}

输出:

Mr. Who -> Mr._Who
Dr. Me -> Dr._Me

也许你期望的空间角色根本不是空间?您可以通过打印出像System.out.println((int) ' ')这样的代码来检查玩家姓名的字符。空格字符代码为32

答案 3 :(得分:0)

你的循环适合我。你确定chatlist不是空的吗?

但正如其他人所说,更简单的方法是`name.replace('','_')。这样做更好,因为它使您的代码更短,更易读。包括你在内的每个人都知道你在一个代码行中想要做的事情。

答案 4 :(得分:0)

您可以查看this answer并使用String.replaceAll代替手动字符替换。

只是为了澄清 - 在这个答案中,匹配了一整套所有空白字符,而不仅仅是空格。

相关问题