本文整理汇总了C#中MutableString.PrepareForCharacterRead方法的典型用法代码示例。如果您正苦于以下问题:C# MutableString.PrepareForCharacterRead方法的具体用法?C# MutableString.PrepareForCharacterRead怎么用?C# MutableString.PrepareForCharacterRead使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MutableString
的用法示例。
在下文中一共展示了MutableString.PrepareForCharacterRead方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Translate
internal static MutableString/*!*/ Translate(MutableString/*!*/ src, MutableString/*!*/ from, MutableString/*!*/ to,
bool inplace, bool squeeze, out bool anyCharacterMaps) {
Assert.NotNull(src, from, to);
if (from.IsEmpty) {
anyCharacterMaps = false;
return inplace ? src : src.Clone();
}
MutableString dst;
if (inplace) {
dst = src;
} else {
dst = src.CreateInstance().TaintBy(src);
}
// TODO: KCODE
src.RequireCompatibleEncoding(from);
dst.RequireCompatibleEncoding(to);
from.PrepareForCharacterRead();
to.PrepareForCharacterRead();
CharacterMap map = CharacterMap.Create(from, to);
if (to.IsEmpty) {
anyCharacterMaps = MutableString.TranslateRemove(src, dst, map);
} else if (squeeze) {
anyCharacterMaps = MutableString.TranslateSqueeze(src, dst, map);
} else {
anyCharacterMaps = MutableString.Translate(src, dst, map);
}
return dst;
}
示例2: InternalSplit
private static RubyArray/*!*/ InternalSplit(MutableString/*!*/ str, MutableString separator, int limit) {
RubyArray result;
if (limit == 1) {
// returns an array with original string
result = new RubyArray(1);
result.Add(str);
return result;
}
if (separator == null || separator.StartsWith(' ') && separator.GetLength() == 1) {
return WhitespaceSplit(str, limit);
}
if (separator.IsEmpty) {
return CharacterSplit(str, limit);
}
if (limit <= 0) {
result = new RubyArray();
} else {
result = new RubyArray(limit + 1);
}
// TODO: invalid characters, k-coding?
str.PrepareForCharacterRead();
separator.PrepareForCharacterRead();
str.RequireCompatibleEncoding(separator);
int separatorLength = separator.GetCharCount();
int i = 0;
int next;
while ((limit <= 0 || result.Count < limit - 1) && (next = str.IndexOf(separator, i)) != -1) {
result.Add(str.CreateInstance().Append(str, i, next - i).TaintBy(str));
i = next + separatorLength;
}
result.Add(str.CreateInstance().Append(str, i).TaintBy(str));
if (limit == 0) {
RemoveTrailingEmptyItems(result);
}
return result;
}
示例3: Include
public static bool Include(MutableString/*!*/ str, [DefaultProtocol, NotNull]MutableString/*!*/ subString) {
str.RequireCompatibleEncoding(subString);
str.PrepareForCharacterRead();
subString.PrepareForCharacterRead();
return str.IndexOf(subString) != -1;
}
示例4: LastIndexOf
public static object LastIndexOf(MutableString/*!*/ self,
[DefaultProtocol, NotNull]MutableString/*!*/ substring, [DefaultProtocol]int start) {
self.PrepareForCharacterRead();
int charCount = self.GetCharCount();
start = IListOps.NormalizeIndex(charCount, start);
if (start < 0) {
return null;
}
if (substring.IsEmpty) {
return ScriptingRuntimeHelpers.Int32ToObject((start >= charCount) ? charCount : start);
}
self.RequireCompatibleEncoding(substring);
substring.PrepareForCharacterRead();
int subCharCount = substring.GetCharCount();
// LastIndexOf has CLR semantics: no characters of the substring are matched beyond start position.
// Hence we need to increase start by the length of the substring - 1.
if (start > charCount - subCharCount) {
start = charCount - 1;
} else {
start += subCharCount - 1;
}
int result = self.LastIndexOf(substring, start);
return (result != -1) ? ScriptingRuntimeHelpers.Int32ToObject(result) : null;
}
示例5: Index
public static object Index(MutableString/*!*/ self,
[DefaultProtocol, NotNull]MutableString/*!*/ substring, [DefaultProtocol, Optional]int start) {
self.PrepareForCharacterRead();
if (!NormalizeStart(self.GetCharCount(), ref start)) {
return null;
}
self.RequireCompatibleEncoding(substring);
substring.PrepareForCharacterRead();
int result = self.IndexOf(substring, start);
return (result != -1) ? ScriptingRuntimeHelpers.Int32ToObject(result) : null;
}