如何删除StringBuilder中的行X和Y?

时间:2015-06-02 15:08:47

标签: c# android regex stringbuilder

我有一个大的字符串文件(原来是geojson),我需要在我的android项目中使用它之前纠正。

我解释一下:我已经将shapefile转换为geojson文件,但转换器做错了。他为坐标设置了一个双数组,并且android无法解析它。

{
        "type": "Feature",
        "properties": {
            "id": 00001,
            "poi": "cinemas",
            "other": "null"
        },
        "geometry": {
            "type": "MultiPoint",
                    "coordinates": [
                  [ // here is the unwanted character #1
                    7.0000000000000,
                    48.0000000000000
                  ] // here is the unwanted character #2
            ]
        }
}

如何生成一个删除第11行和第11行的正确字符串14,这个字符串中的每个Json对象?

我试过了,但没有工作:

string[] x = myJsonString.Split('\n');
x.Remove(x.LastIndexOf(Environment.NewLine)-4);
x.Remove(x.LastIndexOf(Environment.NewLine)-7);

我的方式错了吗?或者StringBuilder可以做到吗?提前谢谢!

3 个答案:

答案 0 :(得分:1)

您可以使用Regular Expression及其grouping feature

// Define your RegEx
Pattern p = Pattern.compile("\\[.*(\\[.*\\]).*\\]");

// Apply this RegEx on your raw string
Matcher m = p.matcher(your_raw_string);

// A container for output string
StringBuffer s = new StringBuffer();

// Iterate over each occurrence of the substring 
while (m.find()) {

    // Append to the output and replace each occurrence with group #1 
    m.appendReplacement(s, m.group(0));
}

// Your desired text!
System.out.println(s.toString());

Reference
More information about using RegEx in Java

答案 1 :(得分:0)

尝试:

myString = Regex.Replace(myString, "[( )*[", "[");
myOtherString = Regex.Replace(myOtherString, "]( )*]", "]");

答案 2 :(得分:0)

使用正则表达式replaceAll:

myJsonString = myJsonString.replaceAll("([\\[\\]])[\\s\\n]+?(?=\\1)", "");

Demo here