[Asp.net]c#のスラッシュと反スラッシュ
6209 ワード
引用する
地方出張では、お客様にプロジェクトを配置し、3つのプロジェクトを統合することで、データフォーマットが異なり、パス内のスラッシュと反スラッシュが大きな問題になります.
この方面の資料を調べて、ここでいくつかの記録をして、1つの小結でしょう.
正スラッシュ(/)和逆スラッシュ()的结合
正のスラッシュ/は除算、区切りを表します.Windowsシステムでは、コマンドラインパラメータ、/表示オプションなどを区切るのに一般的に使用されます.ファイル名として使用できません.
反スラッシュ、windowsシステムでディレクトリを表すために使用されます.
一方、unixシステムでは、/はディレクトリを表します.Webはunixの名前に従うため、URL(URL)にディレクトリを表示します.
C#における反スラッシュとスラッシュ/文字パスの移行の問題
C#でははエスケープ文字で、次のようになります.
エスケープシーケンス
文字
\’
一重引用符
\”
二重引用符
\\
ぎゃくスラッシュ
\0
空
\a
警告
\b
チェックアウト
\f
ページをかえる
折り返し
\r
リターンマッチ
\t
水平タブ
\v
垂直タブ
たとえば、この文字列「/」を出力するには、このように@「」/を書くと思います.""
しかし、このように書くコンパイラはあなたを通過させませんが、表に示すように、「」/\と書くことができます.""
また、ファイルパスを取得する際にd:testを好む人が多い.txt
そしていわゆるエスケープ文字エラーが発生します
解決策は普通の人が@d:testを使う.txtこのように書くといくつかの問題をもたらすかどうか分かりません.
しかし、私のずっとのやり方はd:/testです.txtも完全にアクセスできます
ネットで探してみると、スラッシュとスラッシュの最大の違いは
ネットワークでは、Windowsシステムでコマンドラインパラメータ、/表示オプションなどを区切るためにスラッシュを使用することはできません.
算術演算子/5/2=2.5などの取引に使用
引用説明:正のスラッシュと反のスラッシュの区別があり、正のスラッシュは、一般的にスラッシュと呼ばれ、記号は「/」である.反スラッシュの記号が「」である引用スラッシュ(/)はJAVAでは特に意味がなく、文字「/」を表す.反スラッシュ()ではそうではなく、それに続く文字とエスケープ文字を構成します.例えば、「」(改行を表す)、「」(文字「」を表す)などです.したがって、文字列に文字''を表すには「\」を使用します.例:文字列String s=「namesex」を定義するのは間違っています.String s=「name\sex」を定義するには、String s=「name\sex」を定義します.引用注意:正規表現の「\」は、後に続く文字とエスケープ文字を構成し、特殊な意味を表す.正規表現でスラッシュを表す場合は、「\\」と書きます.もしあなたがMatcherを手に入れたら、Matcher m=Pattern.compile(“\\”).matcher("\")はエラーを報告します.Matcher m=Patternと書くべきです.compile(“\\\\”).matcher("\")が正しく一致する参照です.次に、Stringクラスのreplace(CharSequence target,CharSequence replacement)メソッドとreplaceAll(String regex,String replacement)メソッドの違いを見てみましょう.
1 public static void main(String[] arg)
2 throws OgnlException {String s ="sdf\\a\\aa";
3 // s \ \\
4 System.out.println(s);
5 System.out.println(s.replaceAll("\\\\", "\\\\\\\\"));
6 System.out.println(s.replace("\\", "\\\\"));}
参照は、上記の2つが同じ置換結果を返すことを示します.ここの鍵はStringです.replaceAll()はregular expressionをパラメータとして使用します.ただしjava自体の文字列は、エスケープ記号に対しても同様の処理があります.まずjavaは「\\\\」を1つの文字列(charが2つ含まれる)と解釈します.次に、replaceAllは正規表現をパラメータとしているため、「\」はregexと解釈される.1つのregexにとって、これは1つの文字を表し、「」です.後の8つのにとって、最終的には「\」と解釈されます.言い換えればString.replaceAll()は、regexではなく通常の文字列をパラメータとして、String target=sourceと書く.replaceAll('\\', '\\\\'); それでいいです.
正のスラッシュ(左のスラッシュ)、記号は「/」;反スラッシュ(右スラッシュ)、記号は「」です.
Unix/Linuxでは、パスの区切りには「/home/hutaow」などの正のスラッシュ「/」を採用しています.一方、Windowsでは、パス区切りには「C:WindowsSystem」などの反スラッシュ「」が使用されます.
「C:\Windows\System」というパスの書き方を見ることがあります.つまり、2つの反スラッシュでパスを区切るという書き方です.この書き方はネットアプリケーションやプログラミングでよく見られますが、実際には、上のパスは「C:/Windows/system」で代用でき、間違いはありません.しかし、「C:WindowsSystem」と書くと、いろいろと変なエラーが発生する可能性があります.
上記の問題の原因については,文字列解析の面から分析する.
プログラミングを学んだ人なら誰でも知っているはずですが、Cの中で文字列を出力するとき、改行を出力するには「このマーク」を付けなければなりません.似たように、TABを出力するには「t」を付けます.つまり、反スラッシュ(「」)という記号は、その後ろに付いている文字を結合して他の文字に変換します.この原理によれば、二重引用符('''')を出力するには、'''を入力する必要があり、二重引用符を含む文字列がメモリに正しく書き込まれます.では、反スラッシュを入力したい場合は?簡単です.「\」を叩くだけでいいです.
「C:WindowsSystem」というパス文字列がCコンパイラに渡されてコンパイルされると、実際にメモリに書き込まれた文字列には反スラッシュ「」が含まれておらず、反スラッシュの後ろに続く文字も一緒に他の文字に変換され、再び呼び出されると問題になるかもしれません.
文字列解析はCコンパイラに限らず、Javaコンパイラ、いくつかのプロファイルの解析、Webサーバなど、文字列を解析するという問題に直面します.従来のWindowsでは単一のスラッシュのパス区切り形式が採用されているため、文書パスを解析する際に不要なエラーが発生する可能性があります.そのため、二重のスラッシュ"\"でパスを区切る形式が発生します.解析エンジンがアンチスラッシュをエスケープ文字に解析するかどうかにかかわらず、最終的にメモリで得られるのは「」であり、結果的に問題は発生しません.
これによりWindowsあるいはDOSは設計初期に考慮が不十分であり,Unixのいくつかの特徴と区別するために,Unixにおける正のスラッシュ"/"の区切り経路方式を反スラッシュ""に変更したことも分かる.このような変更による問題の1つは、以前のDOSコマンドラインでは、通常のファイル名にスペースを含めることができず、スペースが含まれている場合、このようなファイル名を入力する場合、コマンド解析ではパラメータと区別できないことです.たとえば、「hutaow yuan」というディレクトリ(ここでは8.3ネーミングルールを無視)に入るには、「cd hutaow yuan」と直接入力します.コマンドラインは、「hutaow」ディレクトリに入るように解析され、後続の「yuan」がパラメータになります.これは明らかに望ましくありません.
Unixでは、ファイル名にスペースが含まれている場合は、スペースの前にスラッシュ""を直接付けて変換することで、コマンドパラメータとよく区別できます(パラメータ間は一般的にスペースで区切られています).やはり上記の例では、Unixで「cd hutaowyuan」(yuanの前のスペースに「」)を入力すると、コマンドラインは「hutaow yuan」を正しく認識してこのディレクトリに入ります.
もちろん、Windowsの後続バージョンでは、ファイル名を二重引用符で囲むなど、他の方法でスペースの問題が解決されています.
正のスラッシュは、左のスラッシュとも呼ばれ、記号は「/」;反スラッシュ、右スラッシュとも呼ばれ、記号は「」です.
いつも正のスラッシュと反のスラッシュはいったいどんな違いがあるのかと迷っています.以下にまとめます.
DOSパス:C:WINDOWSSETTING..これはスラッシュの役割の後ろにファイル名C:dir/Pが付いています...これが正のスラッシュの後ろにある命令のパラメータdirがコマンドです.
C#中:
C#でははエスケープ文字で、次のようになります.
エスケープシーケンス
文字
\’
一重引用符
\”
二重引用符
\\
ぎゃくスラッシュ
\0
空
\a
警告
\b
チェックアウト
\f
ページをかえる
折り返し
\r
車をつぐ
\t
水平タブ
\v
垂直タブ
また、ファイルパスを取得する際に「d:test.txt」を使うのが好きな人が多く、いわゆるエスケープ文字が間違って解決策が発生します@「d:test.txt」を使うのが一般的です
Windowsシステム:
反スラッシュ、windowsシステムでディレクトリを表すために使用されます.スラッシュ/,URL,Urlアドレス.
Asp.Net:「.../」は、現在のディレクトリの親ディレクトリ、すなわち現在の親ディレクトリを表します.「/」はウェブサイトのルートディレクトリを表します.