【问题标题】:String replace method issue in javajava中的字符串替换方法问题
【发布时间】:2017-02-27 05:19:36
【问题描述】:

我的问题是只用另一个字符替换字符串中最后一次出现的字符。当我使用 String.replace(char1, char2) 时,它会替换字符串中所有出现的字符。

例如,我有一个像

这样的地址字符串

String str = "Addressline1,Addressline2,City,State,Country,";

我需要将字符串末尾出现的“,”替换为“.”。

我替换字符的代码是

str = str.replace(str.charAt(str.lastIndexOf(",")),'.');

替换后的字符串如下:

Addressline1.Addressline2.City.State.Country.

Java SDK 有问题吗?如果是,如何解决?

【问题讨论】:

  • 不,#replace 接受一个字符参数并将其替换为第二个。您实际上说过“在字符为, 的位置找到字符,然后将所有这些字符替换为.
  • 试试这个stackoverflow.com/questions/16665387/…>.
  • 您想要什么似乎有些混乱。你想(1)用.替换字符串的最后一个字符,不管它是什么; (2) 将字符串的最后一个字符替换为.,仅当它是逗号时;或 (3) 用. 替换字符串中的最后一个逗号,即使逗号后面还有字符?
  • @suku,我需要在 java 中而不是在 javascript 中解决这个问题。

标签: java string replace


【解决方案1】:

您应该使用使用正则表达式的String.replaceAll

str = str.replaceAll (",$", ".");

$ 表示字符串的结尾

【讨论】:

  • 我认为这是不对的。看看 OP 试图做什么,我认为他试图替换字符串中的最后一个逗号,即使逗号不是字符串的最后一个字符。你的代码没有这样做。另一方面,当我输入此评论时,他刚刚批准了您的回答,所以也许这确实是他想要的。
  • @ajb I need to replace the occurrence of ',' at the end of the string with '.'.
  • 好的,我看到 OP 有点自相矛盾。
【解决方案2】:

Java replace function 有一个方法声明:

public String replace(char oldChar, char newChar)

根据文档replace 将:

返回一个新字符串,该字符串是用newChar替换此字符串中所有出现的oldChar

所以你的代码:

str.charAt(str.lastIndexOf(","))

将明确返回字符,。然后replace 将用newChar . 替换oldChar , 的所有实例。这解释了您所看到的行为。

@ScaryWombat 击败我的解决方案是您的最佳选择:

str = str.replaceAll(",$", ".");

因为,在正则表达式中,$ 表示字符串的结尾。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2012-09-25
    相关资源
    最近更新 更多