【问题标题】:How to replace only the space character with something else如何仅用其他内容替换空格字符
【发布时间】:2014-08-05 09:03:45
【问题描述】:

所以我尝试了这个,但它不想按照我想要的方式工作。我正在尝试制作一个“加密”程序,所以到目前为止我已经这样做了

    input = input.replace("a", "01100001\n");
    input = input.replaceAll("b", "01100010\n");
    input = input.replaceAll("c", "01100011\n");

这是可行的,但问题来了:

    input = input.replaceAll(" ", "01000000");

甚至 "\s" 或任何东西都不能使它工作。

任何人都知道如何让它工作,所以它只替换单词之间的空格字符,只有他们?谢谢

【问题讨论】:

  • 请展示一个简短但完整的程序来说明问题。这真的应该工作 - 虽然我只会使用 replace 除非你需要正则表达式。
  • 注意:这不是空格的正确二进制 - 01000000 是 64,代表 @ 符号。
  • 您确定input 包含空格?
  • 你的输入类型是String吗?使用 input.replaceAll (" ","123) 得到什么结果?

标签: java


【解决方案1】:
input= input.replaceAll("\\s+", "01000000");

【讨论】:

    【解决方案2】:

    使用String.replace() 而不是replaceAll() 方法。后者需要一个正则表达式。

    String s = "Hello World!";
    String output = s.replace( " ", "-" );
    

    结果:

    Hello-World!
    

    此外,如果您只需要用另一个字符替换空格字符,您可以使用 replace() 方法的另一个重载,它需要 2 个字符而不是 2 个 CharSequences。

    【讨论】:

    • 这并不能解释为什么它不能工作," " 作为一个正则表达式没有什么特别的。
    • @T.J.Crowder 不是用^$ 隐式锚定的Java 正则表达式吗?
    • @Alnitak:你的意思是隐含的吗?不,我不知道。
    • @T.J.Crowder 我一定是记错了(是的,我的意思当然是隐含的)
    • @T.J.Crowder 啊,我在想String.matches(),它确实将提供的正则表达式隐式包装在^$中,例如String.matches("abc", "a") == false,但String.matches("abc", ".*a.*") == true
    猜你喜欢
    • 1970-01-01
    • 2018-10-04
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    相关资源
    最近更新 更多