从字符串中删除标签
Deleting tags from a string
我正在尝试重新制作下面的脚本,这样它就不会绘制没有标签 [a=...]
和 [/a]
的文本,而是将它们从字符串中删除。
我制作了这个脚本,但它删除了标签内的所有内容,删除了标签之间以及两个 [a=...] ... [/a] 标签之间的内容。
var xx, yy, str, st, et, ct, l, h, stl, pc, dx, dy, dp, p, c, ds, i;
str = argument0;
st = '[c=';
et = ']';
ct = '[/c]';
l = string_length(str);
h = string_height(' ');
stl = string_length(st);
dp = 1;
result = "";
for (p = 1; p <= l; p += 1) {
c = string_char_at(str, p);
if (c == chr(10) || p == l || (c == '#' && string_char_at(str, p - 1) != '\')) {
result = (string_copy(str, dp, p - dp + 1));
dp = p + 1;
} else if (c == string_char_at(st, 1) || c == string_char_at(ct, 1)) {
if (p + string_length(st) <= l && string_copy(str, p, string_length(st)) == st) {
ds = string_copy(str, dp, p - dp);
string_insert(ds, result, dp);
i = string_copy(str, p + stl, string_pos(et, string_delete(str, 1, p + stl)));
p += string_length(i + et + st) - 1;
dp = p + 1;
} else if (p + string_length(st) <= l && string_copy(str, p, string_length(ct)) == ct) {
ds = string_copy(str, dp, p - dp);
string_insert(ds, result, dp);
p += string_length(ct) - 1;
dp = p + 1;
}
}
}
return (result);
我的脚本应该从字符串中删除标签而不删除标签内的字符串。
代码:
hello, this is [a=1] alpha tag [/a]!
结果:
hello, this is alpha tag !
可以去掉一堆string_pos和string_copy/string_delete
var s = argument0;
var st = '[a=', stl = string_length(st) - 1;
var et = ']', etl = string_length(et) - 1;
for (var p = string_pos(st, s); p != 0; p = string_pos(st, s)) {
// suppose "ab[a=1]cd[/a]ef"
var s0 = string_copy(s, 1, p - 1); // "ab"
var s1 = string_delete(s, 1, p + stl); // "1]cd[/a]ef"
p = string_pos(et, s1);
s = s0 + string_delete(s1, 1, p + etl); // "cd[/a]ef"
}
s = string_replace_all(s, '[/a]', '');
return s;
我正在尝试重新制作下面的脚本,这样它就不会绘制没有标签 [a=...]
和 [/a]
的文本,而是将它们从字符串中删除。
我制作了这个脚本,但它删除了标签内的所有内容,删除了标签之间以及两个 [a=...] ... [/a] 标签之间的内容。
var xx, yy, str, st, et, ct, l, h, stl, pc, dx, dy, dp, p, c, ds, i;
str = argument0;
st = '[c=';
et = ']';
ct = '[/c]';
l = string_length(str);
h = string_height(' ');
stl = string_length(st);
dp = 1;
result = "";
for (p = 1; p <= l; p += 1) {
c = string_char_at(str, p);
if (c == chr(10) || p == l || (c == '#' && string_char_at(str, p - 1) != '\')) {
result = (string_copy(str, dp, p - dp + 1));
dp = p + 1;
} else if (c == string_char_at(st, 1) || c == string_char_at(ct, 1)) {
if (p + string_length(st) <= l && string_copy(str, p, string_length(st)) == st) {
ds = string_copy(str, dp, p - dp);
string_insert(ds, result, dp);
i = string_copy(str, p + stl, string_pos(et, string_delete(str, 1, p + stl)));
p += string_length(i + et + st) - 1;
dp = p + 1;
} else if (p + string_length(st) <= l && string_copy(str, p, string_length(ct)) == ct) {
ds = string_copy(str, dp, p - dp);
string_insert(ds, result, dp);
p += string_length(ct) - 1;
dp = p + 1;
}
}
}
return (result);
我的脚本应该从字符串中删除标签而不删除标签内的字符串。
代码:
hello, this is [a=1] alpha tag [/a]!
结果:
hello, this is alpha tag !
可以去掉一堆string_pos和string_copy/string_delete
var s = argument0;
var st = '[a=', stl = string_length(st) - 1;
var et = ']', etl = string_length(et) - 1;
for (var p = string_pos(st, s); p != 0; p = string_pos(st, s)) {
// suppose "ab[a=1]cd[/a]ef"
var s0 = string_copy(s, 1, p - 1); // "ab"
var s1 = string_delete(s, 1, p + stl); // "1]cd[/a]ef"
p = string_pos(et, s1);
s = s0 + string_delete(s1, 1, p + etl); // "cd[/a]ef"
}
s = string_replace_all(s, '[/a]', '');
return s;