ファイルパスの文字列があります。すべての単一のバックスラッシュ( "\")を二重のバックスラッシュ( "\\")に置き換えたい。
var replaceableString = "c:\asd\flkj\klsd\ffjkl";
var part = /@"\\"/g;
var filePath = replaceableString .replace(part, /@"\\"/);
console.log(filePath);
コンソールはそれを見せてくれました。
c:asdlkjklsdfjkl
このようなものを見つけましたが、残念ながら機能しませんでした。 \\を\\に置き換える
var replaceableString = "c:\asd\flkj\klsd\ffjkl";
alert(replaceableString);
これはあなたに警告しますc:asdlkjklsdfjkl
これは、 '\'が考慮されないエスケープ文字であるためです。
文字列にバックスラッシュを含めるには、次のようにする必要があります。
var replaceableString = "c:\\asd\\flkj\\klsd\\ffjkl";
alert(replaceableString);
これはあなたに警告しますc:\asd\flkj\klsd\ffjkl
デフォルトで文字列に '\'が必要な場合は、エスケープする必要があります。 escape() functionを使用します。
var replaceableString = escape("c:\asd\flkj\klsd\ffjkl");
alert(replaceableString);
試してください:
var parts = replaceableString.split('\\');
var output = parts.join('\\\\');
個人的に、私は正規表現の専門家ではないので、読みやすさと奇妙な間違いを避けるために、英数字以外の文字を扱うときはそれらを避ける傾向があります。
コードにいくつかの問題があります。
文字列変数で\
を取得するには、エスケープする必要があります。
このような文字列を作成する場合:replaceableString = "c:\asd\flkj\klsd\ffjkl";
の前に\
が付いた文字は、エスケープシーケンスとして扱われます。したがって、文字列の作成中に、エスケープシーケンス\a
の解釈が試行されます。これは有効ではないため、a
を文字列に格納します。例えば。 \n
は改行として解釈されます。
@
は.netの例から来ていると思います。 Javascriptは「生の」文字列を認識しません。
正規表現から引用符を削除します。
これはあなたが望むことをするでしょう:
var string = "c:\\asd\\flkj\\klsd\\ffjkl";
var regex = /\\/g;
var FilePath = string.replace(regex, "\\\\");
\はエスケープ文字です。したがって、replaceableString
にはバックスラッシュは含まれません。
これを修正するには、次のような文字列を宣言する必要があります。
var replaceableString = "c:\\asd\\flkj\\klsd\\ffjkl";
答えは次のとおりです。
シングルバックスラッシュをシングルフォワードスラッシュに置き換える場合:
var stringReplaced = String.raw`c:\asd\flkj\klsd\ffjkl`.split('\\').join('/')
console.log(stringReplaced);
ダブルバックスラッシュをシングルスラッシュに置き換える場合:
var stringReplaced = String.raw`c:\\asd\\flkj\\klsd\\ffjkl`.split('\\\\').join('/')
console.log(stringReplaced);
最初に文字列をエンコードします
次に、出現するすべての%5Cを%5C%5Cに置き換えます
最後に文字列をデコードします
var result = encodeURI(input);
result=decodeURI(result.replace(/%5C/g,"%5C%5C"));
文字列に単一のバックスラッシュが含まれる場合、javascript replaceメソッドでは単一のバックスラッシュを置換できませんでした。
代わりに、分割された文字列の配列を返すsplitメソッドを使用して、バックスラッシュなしで文字列を連結する必要がありました(または置き換えたいものは何でも)
解決策(バックスラッシュをアンダースコアに変更):
var splitText = stringWithBackslash.split('\\');
var updatedText = splitText[0] + '_' + splitText[1];
文字列一致の場合、encodeURIComponent、decodeURIComponentを使用することをお勧めします。
match(encodeURIComponent(inputString));
function match(input)
{
for(i=0; i<arr.length; i++)
{
if(arr[i] == decodeURIComponent(input))
return true;
else return false;
}
}
バックスラッシュを検索しようとしている文字列の内容を制御できず、SINGLE _\
_値が含まれている場合(たとえば、変数myPathに_C:\Some\Folder\file.jpg
_が含まれている場合)、実際に単一のバックスラッシュを参照できますJavaScriptではString.fromCharCode(92)
として。
上記のファイルパスの例でファイル名を取得します。
_var justTheName = myPath.split(String.fromCharCode(92)).pop();
_