Java 如何删除字符串中出现的一个字符?
我几天前写了这段代码Java 如何删除字符串中出现的一个字符?,java,Java,我几天前写了这段代码 String removeAll(char c, String s) { String to_return = ""; while(true) { if (s.equals("")) return to_return; // at this point s is not "" char c2 = s.charAt(0); if (c2 != c) { to_return
String removeAll(char c, String s) {
String to_return = "";
while(true) {
if (s.equals(""))
return to_return;
// at this point s is not ""
char c2 = s.charAt(0);
if (c2 != c)
{
to_return += c2;
}
s = s.substring(1);
}
return to_return; // won't be reached
}
print(removeAll('o',"hello"));
差不多。。从字符串中删除所有“o”。。但我自己做了,我应该只删除一个出现的字符
有人能帮我删除一个吗?这将删除
字符串中出现的第一个字符。添加了一个boolean
,以了解char
是否已被删除
String removeAll(char c, String s) {
boolean removed = false;
String to_return = "";
while(true) {
if (s.equals(""))
return to_return;
// at this point s is not ""
char c2 = s.charAt(0);
if (c2 != c)
{
to_return += c2;
}
else
{
if(! removed)
removed = true;
else
to_return += c2;
}
s = s.substring(1);
}
}
removeAll('o','oh,hello')的输出示例
:
您必须使用StringBuilder
,它具有deleteCharAt
方法来删除特定索引处的字符
String inputString = "hello";
char c = 'e';
StringBuilder sb = new StringBuilder(inputString);
sb.deleteCharAt(inputString.indexOf(c));
一种有效的方法是使用StringBuilder:
public static String removeFirst(char ch, String s) {
int charPos = s.indexOf(ch);
if (charPos < 0) {
return s;
}
return new StringBuilder(s).deleteCharAt(charPos).toString();
}
注:
replaceFirst()
方法使用正则表达式进行匹配,因此应确保正确引用字符,以避免正则表达式中有意义的特殊字符出现问题(例如$
)
- 您可以使用
String.valueOf(ch)
而不是”+ch
,但我觉得这更像一口(尽管更“正确”)。如果您担心这段代码太快,我会避免使用replaceFirst()
,因为它非常慢—在后台,每次运行时它都会将表达式编译成正则表达式模式
- 您应该将您的方法命名为
removeFirst()
,而不是removeAll()
,否则会让下一个开发人员非常困惑
什么是print
?如果字符串中多次出现字符,应该删除什么?不回答您的问题,但您应该使用StringBuilder
而不是string
来返回(然后,将返回到\u return.toString()
),否则,您的方法将花费二次时间。是否要实现删除给定字符串中第一次出现的字符?
public static String removeFirst(char ch, String s) {
int charPos = s.indexOf(ch);
if (charPos < 0) {
return s;
}
return new StringBuilder(s).deleteCharAt(charPos).toString();
}
public static String removeFirst(char ch, String s) {
int charPos = s.indexOf(ch);
if (charPos < 0) {
return s;
}
return s.substring(0, charPos) + s.substring(charPos + 1, s.length());
}
public static String removeFirst(char ch, String s) {
return s.replaceFirst(Pattern.quote("" + ch), "");
}