是的,我最近仍然在搞js改c#。遇到很多坑,这里记录一下。
参考:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/substring
substring
c#中是stringName.Substring(start, length)。如果length超出字符串长度范围,会抛异常,这个常常需要注意。
但js的stringName.substring(indexStart, indexEnd),提取从 indexStart 到 indexEnd(不包括)之间的字符,则要灵活好多:
- 如果 indexStart 等于 indexEnd,substring 返回一个空字符串。
- 如果省略 indexEnd,substring 提取字符一直到字符串末尾。
- 如果任一参数小于 0 或为 NaN,则被当作 0。
- 如果任一参数大于 stringName.length,则被当作 stringName.length。
- 如果 indexStart 大于 indexEnd,则 substring 的执行效果就像两个参数调换了一样。
public static string getSubstrLikeJs(string raw, int start, int end) {
if (start == end) {
return "";
}
if (start > end) {
int t = start;
start = end;
end = t;
}
if (end <= 0) {
return "";
}
if (start < 0) {
start = 0;
}
if (start >= raw.Length) {
return "";
}
if (end > raw.Length) {
end = raw.Length;
}
return raw.Substring(start, end - start);
}