Java - Spintax,我该怎么办?

标签 java spintax

我刚刚用 C# 编写了程序,但我想用 Java 重写它。我想创建 spintax 文本。

我的 C# 代码:

        static string spintax(Random rnd, string str)
    {

            // Loop over string until all patterns exhausted.
            string pattern = "{[^{}]*}";
            Match m = Regex.Match(str, pattern);
            while (m.Success)
            {
                // Get random choice and replace pattern match.
                string seg = str.Substring(m.Index + 1, m.Length - 2);
                string[] choices = seg.Split('|');
                str = str.Substring(0, m.Index) + choices[rnd.Next(choices.Length)] + str.Substring(m.Index + m.Length);
                m = Regex.Match(str, pattern);
            }

            // Return the modified string.
            return str;

    }

我已将代码更新为

static String Spintax(Random rnd,String str)
{
    String pat = "\\{[^{}]*\\}";
    Pattern ma; 
    ma = Pattern.compile(pat);
    Matcher mat = ma.matcher(str);
    while(mat.find())
    {
        String segono = str.substring(mat.start() + 1,mat.end() - 1);
        String[] choies = segono.split("\\|",-1);
        str = str.substring(0, mat.start()) + choies[rnd.nextInt(choies.length)].toString() + str.substring(mat.start()+mat.group().length());
        mat = ma.matcher(str);
    }
    return str;
}

非常有效:D 感谢大家的支持..

最佳答案

您需要转义括号

 String pat = "\\{[^{}]*\\}";

关于Java - Spintax,我该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22378414/

相关文章:

c# - Spintax 解析器的正则表达式匹配性能问题

c# - Spintax C# ...我该如何处理?

java - 扩展 JPanel 的问题

java - 使用消息捕获并处理 Java 中的异常抛出(打开文件过多)

java - 使用正则表达式解析街道地址

java - 如何使用持久层对好友系统进行建模?

java - hackerrank-java 子串比较错误