哪个 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 *.
如有任何疑问,请随时提出。