java - 哪个 StringBuilder 函数可用于将每个第一个 * 替换为另一个字符?
问题描述
我曾经使用 continue 跳过下一次迭代,但它不起作用,
- 我的输出:字符串的值:!!EODC Ot EMOCLEw。
- 预期的 o/p : 字符串的值 : !! EODC Ot EMOCLEw *。
代码片段:
public static StringBuilder replace_ast(StringBuilder sb)
{
for(int i=0;i<sb.length();i++)
{
if(sb.charAt(i)=='*')
{
sb.setCharAt(i,' ');
continue;
}
}
return sb;
}
main()
{
String s="!!*EDOC*Ot*EMOCLEw**.";
StringBuilder sb=new StringBuilder();
sb.append(s);
sb=Remove_asterisk.replace_ast(sb);
System.out.println("value of string : "+sb);
}
解决方案
StringBuilder 部分是否相关?这似乎是一大堆不必要的复制到没有您想要的 API 的数据类型。
(另外,在我们的 java 中writeVariablesLikeThis
,not_like_this
如果您需要帮助/编写其他人可以阅读的代码,请遵循约定)。
String s = "!!*EDOC*Ot*EMOCLEw**.";
System.out.println(s);
System.out.println(replaceAst(s));
String t = "****";
System.out.println(t);
System.out.println(replaceAst(t));
static String replaceAst(String s) {
return s.replaceAll("\\*(\\**)", " $1");
}
似乎正在工作:
!!*EDOC*Ot*EMOCLEw**.
!! EDOC Ot EMOCLEw *.
****
***
replaceAll 的那些参数是正则表达式。\\*
是“明星角色”的正则表达式。()
是正则表达式:“记住你在这些中匹配的内容,让我用 $1 重新引用它”。只是*
“其中许多是 0”。(因此,\\**
对于 0 到多个星号字符是正则表达式)。换句话说,该正则表达式表示:1 颗星,然后是任意数量的其他星,让我将额外的星称为 1 美元。
然后我们用空格+那些额外的星星(如果有的话)替换那个构造。结果正是你所要求的。
推荐阅读
- node.js - Microsoft Bot Framework,调用外部自定义构建的 API 发送超时
- css - Web 开发中的可重用模块
- android - android - 如何制作像这样的角落视图
- sql - 如何在 SQLite 中转置表?
- php - 在laravel更新查询构建器上调用整数成员函数when()
- python - Python module not found 错误,pyCharm 一直说没有模块名称 basicconcepts
- scala - 如何在 Scala 的 Flink 中定义 KeySelector?
- machine-learning - 我应该沿着样本标准化还是应该标准化特征?
- python - 使用 Pyinstaller 编译的应用程序无法在其他机器上启动(OSError: dlopen() failed to load a library)
- python - 如何从Python中的自定义导入文件访问嵌套@classmethod中的变量?