我想这样做,所以无论你是否使用100个空格等,每个代码总是看起来一样。
所以例如
Example: lwz r4,-0x0018(rtoc)
这是代码的外观,下面是如何输入代码的示例。
lwz r4, -0x0018 (rtoc)
lwz r4,-0x0018(rtoc)
lwz r4,-0x0018 (rtoc)
还有其他代码,但我认为一般规则是。
(周围没有空间","。"周围没有空间"("和")")。
由于这将通过线路多次循环,因此该方法最好应该非常快。
我不反对使用不安全的代码等:)
谢谢!
编辑:
代码也可以是:" fmul f0,f1,f2"同样适用于那里。
我试过的是将它看作指针(不安全)。 但是,虽然我可以替换角色,但我不能说出来。 我想我必须做没有指针,但我仍然不知道如何找出循环的规则,即使我有点抓住它。 (ifs等格式)。
EDIT2:
这是我似乎已经开始工作的当前Messy代码。
private string FormatCode(string text)
{
int length = text.Length;
char last = '.';
for (int i = 0; i < text.Length; i++)
{
char c = text[i];
if (c == ' ' && last == ',')
{
text = text.Remove(i, 1);
i--;
}
else if (c == ',' && last == ' ')
{
text = text.Remove(i-1, 1);
i--;
}
else if(c=='(' && last == ' ')
{
text = text.Remove(i - 1, 1);
i--;
}
else if(c == ' ' && last == ')')
{
text = text.Remove(i, 1);
i--;
}
else if (c == ' ' && last == ' ')
{
text = text.Remove(i, 1);
i--;
}
last = c;
}
return text;
}
答案 0 :(得分:2)
var a = "lwz r4, -0x0018 (rtoc)";
var b = string.Join(" ", a.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries))
.Replace(" ,", ",").Replace(", ", ",")
.Replace(" (", "(").Replace("( ", "(")
.Replace(" )", ")").Replace(") ", ")");
此变体更快但更长:
var a = "lwz r4, -0x0018 ( rtoc )";
StringBuilder sb = new StringBuilder(a.Length);
var spaceFound = false;
var ignoreSpaces = true;
for (int i = 0; i < a.Length; i++)
if (a[i] == ' ')
spaceFound = true;
else if (a[i] == '(' || a[i] == ')' || a[i] == ',')
{
sb.Append(a[i]);
ignoreSpaces = true;
}
else
{
if (spaceFound && !ignoreSpaces)
sb.Append(' ');
sb.Append(a[i]);
spaceFound = false;
ignoreSpaces = false;
}
var b = sb.ToString();