文字列(別名補間文字列)のフォーマットで三項演算子を使用するとエラーが発生する

ホセインハディ

string現在のものより辞書式に大きいaの最小の順列を見つけるための簡単なプログラムを作成しましたしかし、コンパイラはエラーを出します

ERROR CS1003 Syntax error, ':' expected* ".

私はVS2015(アップデート3)を使用していますが、このプログラムをコンパイルするたびに(文法的に正しいようです)、前述のエラーが発生します。

このプログラムの構文エラーはありますか?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        const string a = "ABCDEFG";
        //var u = FFG(a);
        //var t = int.Parse(Console.ReadLine());
        //for (int i = 0; i < t; i++)
        //{
        //    Console.WriteLine(FFG(Console.ReadLine()));
        //}
        string u2 = a;
        string u = a;
        do
        {
            //***The follownig line meets Error***
            Console.WriteLine(u + $"{String.Compare(u, u2) > 0 ? true:false}");

        } while ((u = FFG(u)) != "no answer");
        Console.ReadLine();
    }
    static string FFG(string ss)
    {
        var s = ss.ToCharArray();
        int i = s.Length - 1;
        while (i >= 1 && s[i] <= s[(i--) - 1])
        { }
        if (i == 0 && s[0] >= s[1])
            return "no answer";
        int j = s.Length - 1;
        while (s[i] >= s[(j--)])
        { }
        j++;
        swap(s, i, j);
        int t = i + 1, tt = s.Length - 1;
        if (j - i >= 2)
            while (t < tt)
            {
                //if (t == j)
                //    t++;
                //if (tt == j)
                //    tt--;
                swap(s, t, tt);
                t++; tt--;
            }
        return new string(s);
    }
    static void swap<T>(T[] array, int i, int j)
    {
        T k = array[i];
        array[i] = array[j]; array[j] = k;
    }
}
Cᴏʀʏ

これはコンパイラのバグではありません。問題は、あなたが持っている補間された文字列フォーマットです:

$"{String.Compare(u, u2) > 0 ? true:false}"

条件式は、内にあるため、括弧で囲む必要があり:ます。通常、の:後にフォーマット式が続きますが、この場合はありません。

代わりにこれを使用してみてください:

$"{(String.Compare(u, u2) > 0 ? true:false)}"

MSDNから(私の強調):

補間された文字列式は$で始まるため、含まれている補間式内で引用符を引用する必要はありません。コンパイラは、コンマ、コロン、または閉じ中括弧が見つかるまで、含まれている補間式をバランスの取れたテキストとしてスキャンします。同じ理由で、最後の例では括弧を使用して、条件式(p.Age == 1? "": "s")を、コロンでフォーマット指定を開始せずに補間式内に含めることができます。

私の意見では、ここで補間された文字列を使用する必要はありません。文字列比較の結果はデバッグに役立つ可能性があるため、文字列から移動します。さらに、Console.WriteLineフォーマット文字列とトークンを受け入れるためすでにオーバーロードされているため、コンソールの出力ロジックを次のように変更します。

do 
{
    var comparisonResult = string.Compare(u, u2) > 0;
    Console.WriteLine("{0} {1}", u, comparisonResult);
} ...

あなたが.ToLower()本当にケーシングを気にかけているなら、あなたもそうすることができます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ピボット長を使用して名前で複数の列を除外すると、単項演算子エラーが発生します

分類Dev

Python文字列のフォーマットでエラーが発生する

分類Dev

IN演算子で使用する文字列変数をフォーマットする方法

分類Dev

NSPredicate'IN '演算子のフォーマットの問題が迅速に発生します。フォーマット文字列を解析できません

分類Dev

Pythonで文字列をフォーマットすると、ファイルが見つかりませんというエラーが発生します

分類Dev

フォーマット演算子を使用して文字列を「更新」する

分類Dev

文字列補間でダッシュをフォーマットする

分類Dev

文字列補間を使用して文字列を列にフォーマットする

分類Dev

Javaの文字列フォーマッタで時間と文字列値をフォーマットする方法

分類Dev

文字列を条件付きで再フォーマットするときにエラーが発生しました

分類Dev

サブセット関数でselect = -c()を使用すると、エラーが発生します:単項演算子への引数が無効です

分類Dev

const文字列を補間するとコンパイラエラーが発生するのはなぜですか?

分類Dev

Vimscript演算子-保留中のマッピングで「末尾の文字」エラーが発生する

分類Dev

文字列補間でオプションを使用するとメモリリークが発生する

分類Dev

ドット演算子を追加すると、Htaccessでエラーが発生する

分類Dev

C ++で文字を文字列のコンポーネントと比較するとエラーが発生する

分類Dev

DjangoでPostgreSQLUPDATEを実行すると、「文字列のフォーマット中にすべての引数が変換されない」というエラーが発生するのはなぜですか?

分類Dev

クラス内の文字列メンバーの演算子>>をオーバーロードするときにエラーが発生しました

分類Dev

ClearDBのデフォルトの接続文字列でキーワード引数を再接続すると、MySQLdbでエラーが発生します

分類Dev

PowerShellで文字列をフォーマットされた日時に変換するとエラーが発生する「文字列は有効な日時として認識されませんでした」

分類Dev

サイクルの三項演算子でエラーが発生するのはなぜですか?

分類Dev

ここでエラーが三項演算子で発生するのはなぜですか?

分類Dev

部分文字列でCharindexを使用すると、エラーが発生します

分類Dev

三項演算子を使用すると「式は整数型でなければならない」エラーが発生する

分類Dev

SQLで文字列値をチェックするとエラーが発生するのはなぜですか

分類Dev

異なるテストで同じ文字列を使用するとエラーが発生する

分類Dev

Unicode文字を使用してモザイクプロットに数学演算子を表示するとエラーが発生する

分類Dev

エラーが発生する Python コード - TypeError: 文字列フォーマット中に変換されたすべての引数がありません

分類Dev

接続文字列でデータベース名を使用すると、マングース接続エラーが発生します

Related 関連記事

  1. 1

    ピボット長を使用して名前で複数の列を除外すると、単項演算子エラーが発生します

  2. 2

    Python文字列のフォーマットでエラーが発生する

  3. 3

    IN演算子で使用する文字列変数をフォーマットする方法

  4. 4

    NSPredicate'IN '演算子のフォーマットの問題が迅速に発生します。フォーマット文字列を解析できません

  5. 5

    Pythonで文字列をフォーマットすると、ファイルが見つかりませんというエラーが発生します

  6. 6

    フォーマット演算子を使用して文字列を「更新」する

  7. 7

    文字列補間でダッシュをフォーマットする

  8. 8

    文字列補間を使用して文字列を列にフォーマットする

  9. 9

    Javaの文字列フォーマッタで時間と文字列値をフォーマットする方法

  10. 10

    文字列を条件付きで再フォーマットするときにエラーが発生しました

  11. 11

    サブセット関数でselect = -c()を使用すると、エラーが発生します:単項演算子への引数が無効です

  12. 12

    const文字列を補間するとコンパイラエラーが発生するのはなぜですか?

  13. 13

    Vimscript演算子-保留中のマッピングで「末尾の文字」エラーが発生する

  14. 14

    文字列補間でオプションを使用するとメモリリークが発生する

  15. 15

    ドット演算子を追加すると、Htaccessでエラーが発生する

  16. 16

    C ++で文字を文字列のコンポーネントと比較するとエラーが発生する

  17. 17

    DjangoでPostgreSQLUPDATEを実行すると、「文字列のフォーマット中にすべての引数が変換されない」というエラーが発生するのはなぜですか?

  18. 18

    クラス内の文字列メンバーの演算子>>をオーバーロードするときにエラーが発生しました

  19. 19

    ClearDBのデフォルトの接続文字列でキーワード引数を再接続すると、MySQLdbでエラーが発生します

  20. 20

    PowerShellで文字列をフォーマットされた日時に変換するとエラーが発生する「文字列は有効な日時として認識されませんでした」

  21. 21

    サイクルの三項演算子でエラーが発生するのはなぜですか?

  22. 22

    ここでエラーが三項演算子で発生するのはなぜですか?

  23. 23

    部分文字列でCharindexを使用すると、エラーが発生します

  24. 24

    三項演算子を使用すると「式は整数型でなければならない」エラーが発生する

  25. 25

    SQLで文字列値をチェックするとエラーが発生するのはなぜですか

  26. 26

    異なるテストで同じ文字列を使用するとエラーが発生する

  27. 27

    Unicode文字を使用してモザイクプロットに数学演算子を表示するとエラーが発生する

  28. 28

    エラーが発生する Python コード - TypeError: 文字列フォーマット中に変換されたすべての引数がありません

  29. 29

    接続文字列でデータベース名を使用すると、マングース接続エラーが発生します

ホットタグ

アーカイブ