json字符串去掉两边双引号怎么弄?Java无效括号如何移除?

JSON是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成,有效地提升网络传输效率。那json字符串去掉两边双引号怎么弄?下面来我们就来给大家讲解一下。

我们看一下相关实例:

str为“123”

如果一个双引号:

str1 = str.replace("\"","").replace("\"","");

如果不确定有多少个双引号:

str2 = str.replace(/\"/g, "");

此方法为替换,也可用于去除制定字符,如:

var str = "12/3";

str1 = str.replace("\/","");

str2 = str.replace(/\//g, "");

输出为:

str1 = 123

str2 = 123

Java无效括号如何移除?

一、题目

给你一个由 ‘('、')' 和小写字母组成的字符串 s。

你需要从字符串中删除最少数目的 ‘(' 或者 ‘)' (可以删除任意位置的括号),使得剩下的「括号字符串」有效。

有效「括号字符串」应当符合以下 任意一条 要求:

空字符串或只包含小写字母的字符串

可以被写作 AB(A 连接 B)的字符串,其中 A 和 B 都是有效「括号字符串」

可以被写作 (A) 的字符串,其中 A 是一个有效的「括号字符串」

二、示例

))(( -》
(leetode -》 leetode
leetode) -》 leetode
(lee(to)de -》 lee(to)de
lee(to)de) -》 lee(to)de
(lee(t(c)o)de -》 lee(t(c)o)de
lee(t(c)o)de) -》 lee(t(c)o)de

解法1:

public class Test
{
    public static void main(String[] args)
    {
        String s1 = "))((";
        System.out.println(s1 + " -》 " + minRemoveToMakeValid(s1));
        String s2 = "(leetode";
        System.out.println(s2 + " -》 " + minRemoveToMakeValid(s2));
        String s3 = "leetode)";
        System.out.println(s3 + " -》 " + minRemoveToMakeValid(s3));
        String s4 = "(lee(to)de";
        System.out.println(s4 + " -》 " + minRemoveToMakeValid(s4));
        String s5 = "lee(to)de)";
        System.out.println(s5 + " -》 " + minRemoveToMakeValid(s5));
        String s6 = "(lee(t(c)o)de";
        System.out.println(s6 + " -》 " + minRemoveToMakeValid(s6));
        String s7 = "lee(t(c)o)de)";
        System.out.println(s7 + " -》 " + minRemoveToMakeValid(s7));
    }
    public static String minRemoveToMakeValid(String str)
    {
        // 初始化"("和")"的个数为0
        int left = 0;
        int right = 0;
        // 将字符串转换为char数组
        char[] chars = str.toCharArray();
        // 从左到右标记多余的")"右括号
        for (int i = 0; i < chars.length; i++)
        {
            if (chars[i] == '(')
            {
                left++;
            }
            else if (chars[i] == ')')
            {
                right++;
            }
            if (right > left)
            {
                chars[i] = '#';
                left = right = 0;
            }
        }
        left = right = 0;
        // 从右到左标记多余的"("左括号
        for (int i = chars.length - 1; i >= 0; i--)
        {
            if (chars[i] == '(')
            {
                left++;
            }
            else if (chars[i] == ')')
            {
                right++;
            }
            if (right < left)
            {
                chars[i] = '#';
                left = right = 0;
            }
        }
        return String.valueOf(chars)
            .replaceAll("#", "");
    }
}

解法2

Stack.peek 与Sstack.pop 的区别

相同点:大家都返回栈顶的值。

不同点:peek 不改变栈的值(不删除栈顶的值),pop会把栈顶的值删除。

public class Test
{
    public static void main(String[] args)
    {
        String s1 = "))((";
        System.out.println(s1 + " -》 " + minRemoveToMakeValid(s1));
        String s2 = "(leetode";
        System.out.println(s2 + " -》 " + minRemoveToMakeValid(s2));
        String s3 = "leetode)";
        System.out.println(s3 + " -》 " + minRemoveToMakeValid(s3));
        String s4 = "(lee(to)de";
        System.out.println(s4 + " -》 " + minRemoveToMakeValid(s4));
        String s5 = "lee(to)de)";
        System.out.println(s5 + " -》 " + minRemoveToMakeValid(s5));
        String s6 = "(lee(t(c)o)de";
        System.out.println(s6 + " -》 " + minRemoveToMakeValid(s6));
        String s7 = "lee(t(c)o)de)";
        System.out.println(s7 + " -》 " + minRemoveToMakeValid(s7));
    }
    public static String minRemoveToMakeValid(String str)
    {
        // 记录要删除括号的下标,然后从后往前删除坐标
        StringBuffer result = new StringBuffer(str);
        Stackstack = new Stack < > ();
        ArrayListdeleteRes = new ArrayList < > ();
        for (int i = 0; i < str.length(); i++)
        {
            if (str.charAt(i) == '(')
            {
                stack.push(i);
            }
            else if (str.charAt(i) == ')')
            {
                if (stack.empty())
                {
                    deleteRes.add(i);
                }
                else if (str.charAt(stack.peek()) == '(')
                {
                    stack.pop();
                }
            }
        }
        while (!stack.empty())
        {
            int temp = stack.peek();
            stack.pop();
            deleteRes.add(0, temp);
        }
        deleteRes.sort(Integer::compareTo);
        for (int i = deleteRes.size() - 1; i >= 0; i--)
        {
            result.deleteCharAt(deleteRes.get(i));
        }
        return result.toString();
    }
}

我们给大家分享了两种取消java无效括号的方法,如果大家遇到Java无效括号,那么就可以按照以上的方法进行解决,最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。

推荐阅读:

java程序员工资一般多少钱?java程序员如何做好职业规划?

有java为什么打不开jar文件?Java闪退怎么办?

geojson是什么格式?geojson有哪些对象?