当前位置: 首页>>代码示例>>C#>>正文


C# MutableString.GetCharCount方法代码示例

本文整理汇总了C#中MutableString.GetCharCount方法的典型用法代码示例。如果您正苦于以下问题:C# MutableString.GetCharCount方法的具体用法?C# MutableString.GetCharCount怎么用?C# MutableString.GetCharCount使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在MutableString的用法示例。


在下文中一共展示了MutableString.GetCharCount方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: AppendDirectoryName

        private static void AppendDirectoryName(MutableString/*!*/ result, MutableString/*!*/ name) {
            int resultLength = result.GetCharCount();

            int i;
            for (i = resultLength - 1; i >= 0; i--) {
                if (!IsDirectorySeparator(result.GetChar(i))) {
                    break;
                }
            }

            if (i == resultLength - 1) {
                if (!IsDirectorySeparator(name.GetFirstChar())) {
                    result.Append(DirectorySeparatorChar);
                }
                result.Append(name);
            } else if (IsDirectorySeparator(name.GetFirstChar())) {
                result.Replace(i + 1, resultLength - i - 1, name);
            } else {
                result.Append(name);
            }
        }
开发者ID:rpattabi,项目名称:ironruby,代码行数:21,代码来源:FileOps.cs

示例2: GetLength

 public static int GetLength(MutableString/*!*/ self) {
     return (self.Encoding.IsKCoding) ? self.GetByteCount() : self.GetCharCount();
 }
开发者ID:jxnmaomao,项目名称:ironruby,代码行数:3,代码来源:MutableStringOps.cs

示例3: Center

        public static MutableString/*!*/ Center(MutableString/*!*/ self, 
            [DefaultProtocol]int length,
            [Optional, DefaultProtocol]MutableString padding) {

            if (padding != null && padding.IsEmpty) {
                throw RubyExceptions.CreateArgumentError("zero width padding");
            }

            if (padding == null) {
                padding = _DefaultPadding;
            } else {
                self.RequireCompatibleEncoding(padding);
            }

            int selfLength = self.GetCharCount();
            if (selfLength >= length) {
                return self;
            }

            int paddingLength = padding.GetCharCount();

            char[] charArray = new char[length];
            int n = (length - selfLength) / 2;

            for (int i = 0; i < n; i++) {
                charArray[i] = padding.GetChar(i % paddingLength);
            }

            for (int i = 0; i < selfLength; i++) {
                charArray[n + i] = self.GetChar(i);
            }

            int m = length - selfLength - n;
            for (int i = 0; i < m; i++) {
                charArray[n + selfLength + i] = padding.GetChar(i % paddingLength);
            }

            return self.CreateInstance().Append(charArray).TaintBy(self).TaintBy(padding); 
        }
开发者ID:,项目名称:,代码行数:39,代码来源:

示例4: Join

        public static MutableString/*!*/ Join(JoinConversionStorage/*!*/ conversions, IList/*!*/ self, MutableString separator) {
            var parts = new List<MutableString>(self.Count);
            bool? isBinary = (separator != null) ? separator.IsBinary : (bool?)null;
            Dictionary<object, bool> seen = null;
            
            // build a list of strings to join:
            JoinRecursive(conversions, self, parts, ref isBinary, ref seen);
            if (parts.Count == 0) {
                return MutableString.CreateEmpty();
            }

            if (separator != null && separator.IsBinary != isBinary && !separator.IsAscii()) {
                isBinary = true;
            }

            // calculate length:
            MutableString any = separator;
            int length = (separator != null) ? (isBinary.HasValue && isBinary.Value ? separator.GetByteCount() : separator.GetCharCount()) * (parts.Count - 1) : 0;
            for (int i = 0, n = parts.Count; i < n; i++) {
                var part = parts[i];
                if (part != null) {
                    length += (isBinary.HasValue && isBinary.Value) ? part.GetByteCount() : part.GetCharCount();
                    if (any == null) {
                        any = part;
                    }
                }
            }

            if (any == null) {
                return MutableString.CreateEmpty();
            }

            var result = isBinary.HasValue && isBinary.Value ? 
                MutableString.CreateBinary(length, any.Encoding) :
                MutableString.CreateMutable(length, any.Encoding);

            for (int i = 0, n = parts.Count; i < n; i++) {
                var part = parts[i];

                if (separator != null && i > 0) {
                    result.Append(separator);
                }

                if (part != null) {
                    result.Append(part);
                    result.TaintBy(part);
                }
            }

            if (separator != null) {
                result.TaintBy(separator);
            }
            if (!result.IsTainted || !result.IsUntrusted) {
                result.TaintBy(self, conversions.Context);
            }
            return result;
        }
开发者ID:jschementi,项目名称:iron,代码行数:57,代码来源:IListOps.cs

示例5: InternalChomp

        private static MutableString InternalChomp(MutableString/*!*/ self, MutableString separator) {
            if (separator == null) {
                return self.Clone();
            }

            // Remove multiple trailing CR/LFs
            if (separator.Length == 0) {
                return ChompTrailingCarriageReturns(self, false).TaintBy(self);
            }

            // Remove single trailing CR/LFs
            MutableString result = self.Clone();
            int length = result.GetCharCount();
            if (separator.StartsWith('\n') && separator.GetLength() == 1) {
                if (length > 1 && result.GetChar(length - 2) == '\r' && result.GetChar(length - 1) == '\n') {
                    result.Remove(length - 2, 2);
                } else if (length > 0 && (self.GetChar(length - 1) == '\n' || result.GetChar(length - 1) == '\r')) {
                    result.Remove(length - 1, 1);
                }
            } else if (result.EndsWith(separator)) {
                int separatorLength = separator.GetCharCount();
                result.Remove(length - separatorLength, separatorLength);
            }

            return result;
        }
开发者ID:,项目名称:,代码行数:26,代码来源:

示例6: CapitalizeMutableString

        public static bool CapitalizeMutableString(MutableString/*!*/ str) {
            bool changed = false;
            if (!str.IsEmpty) {
                int strLength = str.GetCharCount();

                if (UpCaseChar(str, 0)) {
                    changed = true;
                }
                for (int i = 1; i < strLength; ++i) {
                    if (DownCaseChar(str, i)) {
                        changed = true;
                    }
                }
            }
            return changed;
        }
开发者ID:,项目名称:,代码行数:16,代码来源:

示例7: GetSubstring

        public static MutableString GetSubstring(MutableString/*!*/ self, [DefaultProtocol]int start, [DefaultProtocol]int count) {
            int byteCount = self.GetCharCount();
            if (!NormalizeSubstringRange(byteCount, ref start, ref count)) {
                return (start == byteCount) ? self.CreateInstance().TaintBy(self) : null;
            }

            return self.CreateInstance().Append(self, start, count).TaintBy(self);
        }
开发者ID:,项目名称:,代码行数:8,代码来源:

示例8: Join

        public static MutableString/*!*/ Join(ConversionStorage<MutableString>/*!*/ tosConversion, IList/*!*/ self, MutableString/*!*/ separator) {
            var parts = new List<MutableString>(self.Count);
            bool partTainted = false;
            bool? isBinary = (separator != null) ? separator.IsBinary : (bool?)null;
            Dictionary<object, bool> seen = null;
            
            JoinRecursive(tosConversion, self, parts, ref isBinary, ref partTainted, ref seen);
            if (parts.Count == 0) {
                return MutableString.CreateEmpty();
            }

            if (separator != null && separator.IsBinary != isBinary && !separator.IsAscii()) {
                isBinary = true;
            }

            MutableString any = separator;
            int length = (separator != null) ? (isBinary.Value ? separator.GetByteCount() : separator.GetCharCount()) * (parts.Count - 1) : 0;
            foreach (MutableString part in parts) {
                if (part != null) {
                    length += (isBinary.Value) ? part.GetByteCount() : part.GetCharCount();
                    if (any == null) {
                        any = part;
                    }
                }
            }

            if (any == null) {
                return MutableString.CreateEmpty();
            }

            var result = isBinary.Value ? 
                MutableString.CreateBinary(length, any.Encoding) :
                MutableString.CreateMutable(length, any.Encoding);

            for (int i = 0; i < parts.Count; i++) {
                if (separator != null && i > 0) {
                    result.Append(separator);
                }
                result.Append(parts[i]);
            }

            result.IsTainted |= partTainted;
            if (!result.IsTainted && (separator != null && separator.IsTainted || tosConversion.Context.IsObjectTainted(self))) {
                result.IsTainted = true;
            }
            return result;
        }
开发者ID:aceptra,项目名称:ironruby,代码行数:47,代码来源:IListOps.cs

示例9: 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;
        }
开发者ID:,项目名称:,代码行数:44,代码来源:

示例10: GetChar

 public static MutableString GetChar(MutableString/*!*/ self, [DefaultProtocol]int index) {
     return InExclusiveRangeNormalized(self.GetCharCount(), ref index) ? self.GetSlice(index, 1) : null;
 }
开发者ID:,项目名称:,代码行数:3,代码来源:

示例11: LastIndexOf

 public static object LastIndexOf(MutableString/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ substring) {
     if (substring.IsEmpty) {
         self.PrepareForCharacterRead();
         return ScriptingRuntimeHelpers.Int32ToObject(self.GetCharCount());
     }
     return LastIndexOf(self, substring, -1);
 }
开发者ID:,项目名称:,代码行数:7,代码来源:

示例12: GetCharCount

 public static int GetCharCount(MutableString/*!*/ self) {
     return self.GetCharCount();
 }
开发者ID:,项目名称:,代码行数:3,代码来源:

示例13: ChopInteral

 private static MutableString/*!*/ ChopInteral(MutableString/*!*/ self) {
     int length = self.GetCharCount();
     if (length == 1 || self.GetChar(length - 2) != '\r' || self.GetChar(length - 1) != '\n') {
         self.Remove(length - 1, 1);
     } else {
         self.Remove(length - 2, 2);
     }
     return self;
 }
开发者ID:,项目名称:,代码行数:9,代码来源:

示例14: Index

        public static object Index(MutableString/*!*/ self, 
            [DefaultProtocol, NotNull]MutableString/*!*/ substring, [DefaultProtocol, Optional]int start) {

            self.SwitchToCharacters();
            if (!NormalizeStart(self.GetCharCount(), ref start)) {
                return null;
            }

            self.RequireCompatibleEncoding(substring);
            substring.SwitchToCharacters();

            int result = self.IndexOf(substring, start);
            return (result != -1) ? ScriptingRuntimeHelpers.Int32ToObject(result) : null;
        }
开发者ID:jxnmaomao,项目名称:ironruby,代码行数:14,代码来源:MutableStringOps.cs

示例15: LastIndexOf

        public static object LastIndexOf(MutableString/*!*/ self,
            [DefaultProtocol, NotNull]MutableString/*!*/ substring, [DefaultProtocol, DefaultParameterValue(Int32.MaxValue)]int start) {

            self.SwitchToCharacters();
            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.SwitchToCharacters();
            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;
        }
开发者ID:jxnmaomao,项目名称:ironruby,代码行数:30,代码来源:MutableStringOps.cs


注:本文中的MutableString.GetCharCount方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。