我正在将一个as3代码解析为json对象,现在我需要删除所有未被引号括起来的空格,但将来可能会添加一个选项来用一个替换多个空格。
示例:
<HeaderGridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:horizontalSpacing="8dp"
android:numColumns="2"
android:padding="8dp"
android:stretchMode="columnWidth"
android:verticalSpacing="8dp" />
List<string> codeList = new List<string>();
codeList.Add("private var a:string = \"this is string\" ;");
codeList = FormatCode(codeList);
的输出应为:
codeList[1]
或
- privatevara:string=\"this is string\";
我很感激任何帮助或想法来解决问题。
答案 0 :(得分:0)
您可以执行以下操作来压缩不在引号内的空格。请注意,这并不能验证引号是否匹配,并且不适用于转义引号。
public static string CompressSpacesOutsideQuotes(string input)
{
bool quoted = false;
bool spaceSeen = false;
var builder = new StringBuilder();
foreach (char c in input)
{
if (c == '"')
{
quoted = !quoted;
}
if (c == ' ' && !quoted)
{
spaceSeen = true;
continue;
}
if(spaceSeen)
{
builder.Append(' ');
spaceSeen = false;
}
builder.Append(c);
}
if (spaceSeen) builder.Append(' ');
return builder.ToString();
}
为您的例子
Console.WriteLine(
CompressSpacesOutsideQuotes("private var a:string = \"this is string\" ;"));
打印
private var a:string = "this is string" ;
答案 1 :(得分:0)