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


C# MutableString.IsAscii方法代码示例

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


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

示例1: Parse

        public static IOInfo Parse(RubyContext/*!*/ context, MutableString/*!*/ modeAndEncoding) {
            if (!modeAndEncoding.IsAscii()) {
                throw IOModeEnum.IllegalMode(modeAndEncoding.ToAsciiString(false));
            }

            string[] parts = modeAndEncoding.ToString().Split(':');
            return new IOInfo(
                IOModeEnum.Parse(parts[0]),
                (parts.Length > 1) ? TryParseEncoding(context, parts[1]) : null,
                (parts.Length > 2) ? TryParseEncoding(context, parts[2]) : null
            );
        }
开发者ID:,项目名称:,代码行数:12,代码来源:

示例2: Create

        public static CharacterMap/*!*/ Create(MutableString/*!*/ from, MutableString/*!*/ to) {
            Debug.Assert(!from.IsEmpty);

            int fromLength = from.GetCharCount();
            bool complemental = from.StartsWith('^') && fromLength > 1;

            // TODO: kcodings
            // TODO: surrogates
            // TODO: max - min > threshold

            int min, max;
            if (from.IsBinaryEncoded || from.IsAscii()) {
                min = 0;
                max = 255;
            } else {
                min = Int32.MaxValue;
                max = -1;
                for (int i = (complemental ? 1 : 0); i < fromLength; i++) {
                    int c = from.GetChar(i);
                    if (c < min) {
                        min = c;
                    }
                    if (c > max) {
                        max = c;
                    }
                }
            }

            BitArray map;
            char[] image;

            if (complemental || to.IsEmpty) {
                image = null;
                map = MakeBitmap(from, fromLength, complemental, min, max);
            } else {
                map = null;
                image = new char[max - min + 1];

                // no need to initialize the array:
                Debug.Assert(Unmapped == 0);

                bool needMap = false;
                var toEnum = ExpandRanges(to, 0, to.GetCharCount(), true).GetEnumerator();
                foreach (var f in ExpandRanges(from, 0, fromLength, false)) {
                    toEnum.MoveNext();
                    needMap |= (image[f - min] = toEnum.Current) == Unmapped;
                }

                if (needMap) {
                    map = MakeBitmap(from, fromLength, false, min, max);
                }
            }

            return new CharacterMap(map, image, complemental ? to.GetLastChar() : -1, complemental, min, max);
        }
开发者ID:Jirapong,项目名称:main,代码行数:55,代码来源:CharacterMap.cs

示例3: 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

示例4: AddEncoding

        public IOInfo AddEncoding(RubyContext/*!*/ context, MutableString/*!*/ encoding) {
            if (!encoding.IsAscii()) {
                context.ReportWarning(String.Format("Unsupported encoding {0} ignored", encoding.ToAsciiString(false)));
                return this;
            }

            if (HasEncoding) {
                throw RubyExceptions.CreateArgumentError("encoding specified twice");
            }

            string[] parts = encoding.ToString().Split(':');
            return new IOInfo(
                _mode,
                TryParseEncoding(context, parts[0]),
                (parts.Length > 1) ? TryParseEncoding(context, parts[1]) : null
            );
        }
开发者ID:,项目名称:,代码行数:17,代码来源:

示例5: LastIndexOf

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

            if (!self.IsBinaryEncoded && !self.Encoding.IsKCoding && !self.IsAscii()) {
                throw RubyExceptions.CreateTypeError("type mismatch: Fixnum given");
            }

            int byteCount = self.GetByteCount();
            start = IListOps.NormalizeIndex(byteCount, start);
            if (start < 0 || character < 0 || character > 255) {
                return null;
            }

            if (start >= byteCount) {
                start = byteCount - 1;
            }
            
            int result = self.LastIndexOf((byte)character, start);
            return (result != -1) ? ScriptingRuntimeHelpers.Int32ToObject(result) : null;
        }
开发者ID:jxnmaomao,项目名称:ironruby,代码行数:20,代码来源:MutableStringOps.cs

示例6: Index

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

            if (!self.IsBinaryEncoded && !self.Encoding.IsKCoding && !self.IsAscii()) {
                throw RubyExceptions.CreateTypeError("type mismatch: Fixnum given");
            }

            if (!NormalizeStart(self.GetByteCount(), ref start) || character < 0 || character > 255) {
                return null;
            }

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

示例7: 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

示例8: IsAscii

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

示例9: ContainsBinaryData

        /// <summary>
        /// Returns true if the string binary representation contains bytes from set: 0..0x1f + 0x7f..0xff - [0x0a, 0x0d].
        /// </summary>
        internal static bool ContainsBinaryData(MutableString/*!*/ str)
        {
            if (!str.IsAscii()) {
                return true;
            }

            // for ascii strings we can iterate over bytes or characters without converting the string repr:
            for (int i = 0; i < str.GetByteCount(); i++) {
                byte b = str.GetByte(i);
                if (b < 0x20 && b != 0x0a && b != 0x0d || b >= 0x7f) {
                    return true;
                }
            }

            return false;
        }
开发者ID:TerabyteX,项目名称:main,代码行数:19,代码来源:BuiltinsOps.cs

示例10: ToYamlNode

        public static Node ToYamlNode(MutableString/*!*/ self, [NotNull]RubyRepresenter/*!*/ rep)
        {
            if (!self.IsEmpty && ContainsBinaryData(self)) {
                return rep.BaseCreateNode(self.ToByteArray());
            }

            Debug.Assert(self.IsAscii());
            string str = self.ToString();

            ScalarQuotingStyle style = ScalarQuotingStyle.None;
            if (str.StartsWith(":", StringComparison.Ordinal)) {
                style = ScalarQuotingStyle.Double;
            } else {
                style = rep.GetYamlStyle(self);
            }

            var tag = rep.GetTagUri(self, Tags.Str, typeof(MutableString));
            IList instanceVariableNames = rep.ToYamlProperties(self);
            if (instanceVariableNames.Count == 0) {
                return rep.Scalar(tag, str, style);
            }

            var map = new Dictionary<object, object>();
            rep.AddYamlProperties(map, self, instanceVariableNames, false);
            return rep.Map(
                new Dictionary<Node, Node> {
                    { rep.Scalar(null, "str", style), rep.Scalar(null, str, style) }
                },
                tag,
                map,
                FlowStyle.Block
            );
        }
开发者ID:TerabyteX,项目名称:main,代码行数:33,代码来源:BuiltinsOps.cs


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