繁体   English   中英

从Java中的字符串中删除字符

[英]Character deletion from a string in java

我有一个字符串*dfgi*kjklx 我想删除*输出之前和之后的字符

fgjklx

我已经编写了这样的代码,但是它显示了索引超出范围的错误。

String t = "*dfgi*kjklx";
 for(int i = 0; i < s.length(); i++)
  {
   String temp = s.charAt(i);
   if(temp == ‘*’)
    {
      t = t.replace(s.charAt(i), '');
      t = t.replace(s.charAt(i-1), '');
      t = t.replace(s.charAt(i+1), '');
      System.out.println("String: " + t);
     }
  }

您可以使用这样的正则表达式:

public static void main(String[] args) throws Exception {
    String s = "*dfgi*kjklx";
    System.out.println(s.replaceAll("\\w?\\*\\w?", "")); // replace 0 or 1 [a-zA-Z0-9] * 0 or 1 [a-zA-Z0-9].
}

O / P:

fgjklx

编辑:就像安迪(Andy)在他的评论中所说,您可以使用. 而不是\\\\w删除后跟“ *”的“ anything”。

我可以用StringBuilder来解决这个问题:

StringBuilder sb = new StringBuilder(t.length());
for (int i = 0; i < t.length(); ++i) {
  if (t.charAt(i) != '*'                     // Check the current character.
      && (i == 0 || t.charAt(i - 1) != '*')  // Check the prev character.
      && (i + 1 >= t.length() || t.charAt(i + 1) != '*')) {  // Check the next.
    sb.append(t.charAt(i));
  }
}
t = sb.toString();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM