2017-08-22 8 views
0

以下のタグを分割して、部分文字列"PDSGJ:IO.HJ"を抽出するにはどうすればよいですか?バックスラッシュを含むJavaScriptの文字列の分割

var input = "\\initvalues\PDSGJ:IO.HJ~some"

私は次のことを試してみました:

var input = "\\initvalues\PDSGJ:IO.HJ~some"; 
var b = input.split('\\'); 
alert(b[1]); 

注:フォーマットは同じまま、\\、\、〜フォーマットは、すべての文字列に対して同じとは必須です。

しかし、問題は、出力がinitvaluesPDSGJ:IO.HJ〜someのようになります。 私はさらに分割して値を取得する必要があるので、'\'も必要です。

他の方法はありますか?

+0

これは、読み取り価値があるかもしれません:) https://stackoverflow.com/questions/4607745/split-string-only- #4607799 – ThisGuyHasTwoThumbs

+0

最初-インスタンスの指定文字-に私は '\\ initvaluesを考える\ PDSGJ:あなたは'エスケープされていないようIO.HJ〜のsome':IO.HJ〜のsome'は '\ initvaluesPDSGJに変更なっています\\ 'それをエスケープした後に試してください、それは動作するはずです。 –

+1

あなたのコードを動作させるには、テスト文字列を設定するときに "\"をエスケープする必要があります: 'input =" \\\\ initvalues \\ PDSGJ:IO.HJ〜some "'。文字列にこの値が入っているときは大丈夫ですが、文字通り入力するときは、それらをエスケープする必要があります。 – Kaddath

答えて

1

あなたはregular expressionsを使用することができます。

var input = '\\initvalues\PDSGJ:IO.HJ~some', 
 
    b = input.match(/[A-Z]+:[A-Z]+.[A-Z]+~[a-z]+/); 
 
    
 
console.log(b && b[0]);

0

バックスラッシュはescape characterとして解釈されます。したがって、バックスラッシュごとに別のバックスラッシュを追加する必要があります。 はその後、直接、最後のバックスラッシュを検索し、その文字列をスライス:

var input = "\\\\initvalues\\PDSGJ:IO.HJ~some"; 
var index = input.lastIndexOf('\\'); 
var str = input.slice(index+1) 
alert(str); 
0

それは、バックスラッシュはエスケープ文字として解釈されていることを、他の人がすでに述べたように、確かに正しいです。

適切な結果をリストとして出力します。

var txt='\\\\initvalues\\PDSGJ:IO.HJ~some'; 
txt.split(/\\\\/).pop(0).split(/\\/) 

(2) ["initvalues", "PDSGJ:IO.HJ~some"] 
関連する問題