string a = "文字列A"; string b; b = a.Substring(「開始位置」,「取り出す文字数」);開始位置は0から始まる
全角も1文字として数えられます
b = a.Substring(0, 2); //先頭から2文字→文字 b = a.Substring(1, 2); //2文字目から3文字→字列 b = a.Substring(1); //3文字目以降全部→字列A
●特定の文字列で分割
string a = "文字列A\n文字列B"; string[] b; string c; b = a.Split("\n"[0]); //改行コードで分割 c = b[0]; //cには『文字列A』が入る
区切り文字を複数にしたい場合は,配列にすれば可能です
string a = "文字列A\n文字列B"; string[] b; string c; string[] KUGIRI = {"\r", "\n"}; //データの区切り文字 b = a.Split(KUGIRI); //KUGIRI変数内の各文字で分割 c = b[0]; //cには『文字列A』が入る
○空白だけの項目は削除したい場合
Splitには実は第2引数があり,そこに System.StringSplitOptions.RemoveEmptyEntriesを指定すると,分割した後中身の無い変数は削除されます
string a = "文字列A\n\n\n文字列B"; //間に改行が3つある string[] b; string c; b = a.Split("\n"[0], System.StringSplitOptions.RemoveEmptyEntries); //改行コードで分割。空欄は削除する//b[0]には『文字列A』
//b[1]には『文字列B』
//が入る
●文字列比較
原則として ==で比較しますstring a="文字列A"; if(a == "文字列A"){ //一致した }else{ //一致しなかった }・うまく比較できない場合はEqualsメソッドを使う
string a="文字列A"; if(a.Equals("文字列A")){ //一致した }else{ //一致しなかった }・宣言をしただけの変数との比較はできません
string a; if (a == null) { //x }↓こういうエラーが出ます
error CS0165: Use of unassigned local variable `a'
if文を使用する変数は,必ず定義されていなければなりません
されない場合がある。というのもダメです
string a; int b=1; if (b == 1) { a = "初期化"; } if (a == null) { Debug.Log("true"); }※bが1でない場合が発生するかも知れないのでエラーになります
・nullの状態
何も入っていない状態が nullなのでは無くて,nullも代入できるという事です
string a=null;
●数値を文字列に代入
・整数int a = 123; string b; b = "" + a;
・少数
float a = 123.45f; string b; b = "" + a;
●文字を数値に代入
・整数の場合string a = "123"; int b; try{ b = int.Parse(a); }catch{ //エラー時:文字列が整数で無い時(少数の時もエラーになる) }変換できない文字列の場合は以下のエラーになります
NullReferenceException: Object reference not set to an instance of an object
・少数の場合
string a = "123.45"; float b; try{ b = float.Parse(a); }catch{ //エラー時:文字列が少数で無い時 }
○例外を発生させたくない場合はTryParseメソッドを使う
・整数の場合
string a = "123"; int b; if(int.TryParse(a, out b)){ //正常の時 //bに結果の123が入っている }else{ //エラー時:文字列が整数で無い時(少数の時もエラーになる) //bには常に0が入っている }
・少数の場合
string a = "123.45"; float b; if(float.TryParse(a, out b)){ //正常の時 //bに結果の123.45が入っている }else{ //エラー時:文字列が少数で無い時 //bには常に0が入っている }
●文字列検索
string a = "文字列A\n文字列B"; int b; b = a.IndexOf('\n');
先頭を 0とした,最初に発見した文字数が入ります
この場合は b=4です
文字が発見できなかった場合は,-1が入ります
if (a.IndexOf('\n') == -1) { //文字列が無かった } else { //文字列があった }
●switch~case文
string word="春";switch(word){
case "春":
case "夏":
case "秋":
case "冬":
//春夏秋冬のどれかだった場合
break;
default:
//それ以外
break; //省略不可
}
※最後のbreakは省略できません。書き忘れると以下のエラーが出ます
error CS0163: Control cannot fall through from one case label to another
●デバッグ出力
string debug = "デバッグ文字列"; Debug.Log(debug);※Consoleウィンドウは,メニューの Window→Consoleで表示されます
'Programming > C#/Xna/Kinect/WPF' 카테고리의 다른 글
[XNA] Scrolling background images horizontally across the screen (0) | 2013.05.08 |
---|---|
[XNA] A Simple 2D Camera (0) | 2013.05.08 |
[Kinect] 키넥트 1.6 에서 프로그램 종료시 프리즈 되는 현상 (0) | 2012.12.14 |
[C#] 컴파일러와 dll파일 (0) | 2012.11.20 |
[C#] ListView에서 Tag의 활용 (0) | 2012.11.15 |