0

なぜこれが起こるのですか?

別のクラスから文字列を取得して現在の文字列と比較していますが、文字列に問題があるため、ifステートメントが機能しませんでした。長さを確認してみたところ、違います。これはどのように可能ですか?

receiveCom = "go";

  public string checkaction(string receivedCom)
        {

            print ("-------" + receivedCom + "-------" + receivedCom.Length); //Just to show there isnt any white spaces behind or infront --> OUTPUT IS "-------go-------3"
            print (receivedCom + receivedCom.Replace(" ", "").Length); //Tried removing white spaces if there were any --> OUTPUT "go3"
            string x = receivedCom.Remove(receivedCom.Length-1); 
            print (x + " " +x.Length); --> OUTPUT IS "go 2" (Correct lenght, but if still doesnt want to work with it)

            if("go".Equals(x)){
            return "yes";
            }
            else{return "";}
        }

何か奇妙なことが起こっているか、私はそれを失っています。

これはCSスクリプトで行われました。(Unityで使用されます。)

アップデート:

Jon Skeetから提供されたコードを実行すると、これが私の結果です

Lenght: 3
receivedCom[0] = 103
receivedCom[1] = 111
receivedCom[2] = 13

更新:「キャリッジリターン」を取得するために来た方法

void Start () {

        player = GameObject.FindWithTag("Player");
        script = (PlayerScript) player.GetComponent(typeof(PlayerScript));

        Process p = new Process();
        p.StartInfo.FileName = @"F:\ReceiveRandomInput.exe"; //This exe generates random strings like "go" "start" etc as a console application


        p.StartInfo.Arguments = "arg0 arg1 arg2 arg3 arg4 arg5";
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        //add event handler when output is received
        p.OutputDataReceived += (object sender, DataReceivedEventArgs e) => {


        data = e.Data;  //THIS DATA is what i sent though to the other class (one with the carriage return in
        received = true;
        };

        p.Start();
        p.BeginOutputReadLine();
    }
4

1 に答える 1

2

これはどのように可能ですか?

空白がないことを示しました。これは、印刷できない文字がないという意味ではありません。

最も簡単な診断は、「奇数」の Unicode 値を出力することです。

print((int) receivedCom[receivedCom.Length - 1]);

私はそれが 0 になると推測しています。これは、データの読み取り方法における 1 つずつずれているエラーです。

編集:もちろん、文字列の内容を正確に表示するには、すべてを印刷するだけです:

print ("Length: " + receivedCom.Length);
for (int i = 0; i < receivedCom.Length; i++)
{
    print("receivedCom[" + i + "] = " + (int) receivedCom[i];
}

その結果を質問に編集していただけると、前進できます。

于 2012-11-08T22:45:59.580 に答える