【问题标题】:Character ArrayList, Replacing only CharactersCharacter ArrayList,仅替换字符
【发布时间】:2014-07-13 16:30:01
【问题描述】:

我在我的程序中创建了一个数组列表,我希望能够对其进行更改。为了做到这一点,我尝试使用ArrayListName.set(i,'!'),但问题是我希望它只替换字符而不是空格。

我怎样才能让它做到这一点?谢谢!

import java.util.ArrayList;

public class Test {

public static void main(String[] args){

    String words = new String("HELLO GOODBYE!");
    ArrayList<Character> sample = new ArrayList<Character>();

    for(int i = 0; i < words.length(); i++)
        sample.add(words.charAt(i));

    for(int i = 0; i < sample.size(); i++)
        sample.set(i,'!');

}

一个示例输出(我想要)将是一个变化: 你好再见! 到: !!!!!! !!!!!!!!!

【问题讨论】:

  • 哦,对不起,我忘了把它写出来,我会在@Unihedron 中添加它
  • 是否要替换所有非空格字符?还是只想替换大写和小写字符? HELLO GDBYE!改成: !!!!! !!!!! ?
  • 我想我想让任何不是空格的字符都能被替换@Darwyn

标签: java arraylist replace character


【解决方案1】:

来自 String 类的 Java API:

在你的循环中:

if (charAt(i) != ' ' //space)) {
 sample.set(i,'!');
}

有关更多信息,请阅读String 的 Java API

【讨论】:

  • 为什么不使用charAt(i) != ' '
  • 出于习惯我只用了32
  • 哦,谢谢!但是现在我怎样才能让它在单词之间仍然有空格?
  • @user3806226:这就是上面所做的。您是否尝试过理解代码并运行它?
  • 保留空格。
【解决方案2】:

最好使用 REGEX 和字符串方法 replaceALL

String helloWorld = "HELLO WORLD!";
String newVal = helloWorld.replaceAll("\\S", "!");

这个正则表达式替换所有非空白字符。

【讨论】:

    【解决方案3】:

    你可以做很多事情,可能最简单的学习方法是使用 if 语句来检查空格。

       for(int i = 0; i<sample.size();i++){
           if(!Character.isWhitespace(sample.get(i)) {
               sample.set(i,'!');
           }
       }
    

    【讨论】:

    • 哦,谢谢!但是现在我怎样才能让它在单词之间仍然有空格?
    • @user3806226:这就是上面所做的。您是否尝试过理解代码并运行它?
    • 是的,我试过了,并更改为具有正确数量的感叹号,但我想要更改为:HELLO GOODBYE!到 !!!!! !!!!!!!!!
    • 这就是上面所做的。在这个循环之后打印列表,你会看到它包含一个空格。
    • 是的,我犯了一个错误。我对数组列表还不太熟悉。非常感谢!
    猜你喜欢
    • 2015-08-06
    • 2013-02-26
    • 1970-01-01
    • 2020-01-14
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    相关资源
    最近更新 更多