如何解决哪个 StringBuilder 函数可用于将每个第一个 * 替换为另一个字符?
我曾经使用过继续跳过下一次迭代,但它不起作用,
- 我的输出:字符串的值:!! 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 中我们 localRotation = glm::identity<glm::quat>();
,void BaseObject::RecalculateTransform()
{
isTransformChanged = false;
// For top object
if (parent.expired())
{
worldTransform = localTransform = glm::mat4(1);
return;
}
const auto& scaled = glm::scale(glm::mat4(1),localScale);
const auto& rotated = glm::mat4(localRotation) * scaled;
const auto& translated = glm::translate(glm::mat4(1),localPosition) * rotated;
localTransform = translated;
worldTransform = parent.lock()->GetWorldTransform() * localTransform;
}
。如果您需要帮助/编写其他人可以阅读的代码,请遵循约定)。
writeVariablesLikeThis
似乎有效:
not_like_this
replaceAll 的那些参数是正则表达式。 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 *.
****
***
是正则表达式:“记住你在这些里面匹配了什么,让我用 $1 来引用它”。只是 \\*
是“0 到其中许多”。 (因此,()
是 0 到多个星号字符的正则表达式)。换句话说,该正则表达式表示:1 颗星,然后是任意数量的其他星,让我将额外的星称为 $1。
然后我们用空间 + 那些额外的星星(如果有)替换该构造。结果正是您所要求的。
,这是你想要的:
import java.util.*;
class Remove_asterisk
{
public static StringBuilder replace_ast(StringBuilder sb)
{
for(int i=0; i<sb.length(); i++)
{
if (sb.charAt(i)=='*')
{
sb.setCharAt(i,' ');
while (i<sb.length()-1 && sb.charAt(i+1)=='*')
++i; // This will skip all the upcoming *'s
}
}
return sb;
}
public static void main (String[] args)
{
String s = "!!*EDOC*Ot*EMOCLEw**.";
StringBuilder sb = new StringBuilder(s);
sb = Remove_asterisk.replace_ast(sb);
System.out.println("Value of string : "+sb);
}
}
示例:当我们在 i=18 时,找到了 *
,因此我们将其替换为
并移至 i=20,因为我们与下一个星号无关。>
O/P:Value of string : !! EDOC Ot EMOCLEw *.
如有任何疑问,请随时提出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。