Append() public méthode

public Append ( char value ) : StringBuilder
value char
Résultat System.Text.StringBuilder
Exemple #1
0
            public string Resolve()
            {
                var currentState = States.CopyingLiterals;
                _Result = new Result();
                StringBuilder currentExpression = null;
                foreach (var character in _template.ToCharArray())
                {
                    switch (currentState)
                    {
                        case States.CopyingLiterals:
                            if (character == '{')
                            {
                                currentState = States.ParsingExpression;
                                currentExpression = new StringBuilder();
                            }
                            else if (character == '}')
                            {
                                throw new ArgumentException("Malformed template, unexpected } : " + _Result.ToString());
                            }
                            else
                            {
                                _Result.Append(character);
                            }
                            break;
                        case States.ParsingExpression:
                            if (character == '}')
                            {
                                ProcessExpression(currentExpression);

                                currentState = States.CopyingLiterals;
                            }
                            else
                            {
                                currentExpression.Append(character);
                            }

                            break;
                    }
                }
                if (currentState == States.ParsingExpression)
                {
                    _Result.Append("{");
                    _Result.Append(currentExpression.ToString());

                    throw new ArgumentException("Malformed template, missing } : " + _Result.ToString());
                }

                if (_ErrorDetected)
                {
                    throw new ArgumentException("Malformed template : " + _Result.ToString());
                }
                return _Result.ToString();
            }
Exemple #2
0
        private void ProcessExpression(StringBuilder currentExpression)
        {
            if (currentExpression.Length == 0)
            {
                _ErrorDetected = true;
                _Result.Append("{}");
                return;
            }

            OperatorInfo op = GetOperator(currentExpression[0]);

            var  firstChar = op.Default ? 0 : 1;
            bool multivariableExpression = false;

            var varSpec = new VarSpec(op);

            for (int i = firstChar; i < currentExpression.Length; i++)
            {
                char currentChar = currentExpression[i];
                switch (currentChar)
                {
                case '*':
                    varSpec.Explode = true;
                    break;

                case ':':          // Parse Prefix Modifier
                    var prefixText = new StringBuilder();
                    currentChar = currentExpression[++i];
                    while (currentChar >= '0' && currentChar <= '9' && i < currentExpression.Length)
                    {
                        prefixText.Append(currentChar);
                        i++;
                        if (i < currentExpression.Length)
                        {
                            currentChar = currentExpression[i];
                        }
                    }
                    varSpec.PrefixLength = int.Parse(prefixText.ToString());
                    i--;
                    break;

                case ',':
                    multivariableExpression = true;
                    var  success = ProcessVariable(varSpec, multivariableExpression);
                    bool isFirst = varSpec.First;
                    // Reset for new variable
                    varSpec = new VarSpec(op);
                    if (success || !isFirst || _resolvePartially)
                    {
                        varSpec.First = false;
                    }
                    if (!success && _resolvePartially)
                    {
                        _Result.Append(",");
                    }
                    break;


                default:
                    if (IsVarNameChar(currentChar))
                    {
                        varSpec.VarName.Append(currentChar);
                    }
                    else
                    {
                        _ErrorDetected = true;
                    }
                    break;
                }
            }

            ProcessVariable(varSpec, multivariableExpression);
            if (multivariableExpression && _resolvePartially)
            {
                _Result.Append("}");
            }
        }