文字列があり、引用符の前に文字を抽出しようとしています。
例は14 'から14を抽出- €14.99
これを達成するために次のコードを使用しています。
$menuItem.text().match(/[^']*/)[0]
私の問題は、文字列が €0.88 のようなものである場合、空の文字列を返したいということです。しかし、0.88 ユーロの完全な文字列が返されます。
私は試合で何を間違っていますか?
文字列があり、引用符の前に文字を抽出しようとしています。
例は14 'から14を抽出- €14.99
これを達成するために次のコードを使用しています。
$menuItem.text().match(/[^']*/)[0]
私の問題は、文字列が €0.88 のようなものである場合、空の文字列を返したいということです。しかし、0.88 ユーロの完全な文字列が返されます。
私は試合で何を間違っていますか?
これは、分割に使用する必要があるものです。
string.slice(0, string.indexOf("'"));
そして、存在しない値のエッジケースを処理するには:
function split(str) {
var i = str.indexOf("'");
if(i > 0)
return str.slice(0, i);
else
return "";
}
OPが尋ねた各ケースをカバーする最も安全で最も明白なオプションとして私に思われるものを誰も提示していないようなので、私はこれを提供すると思いました:
function getCharsBefore(str, chr) {
var index = str.indexOf(chr);
if (index != -1) {
return(str.substring(0, index));
}
return("");
}
これを試して
str.substring(0,str.indexOf("'"));
これは、coffescript のアンダースコア mixin です。
_.mixin
substrBefore : ->
[char, str] = arguments
return "" unless char?
fn = (s)-> s.substr(0,s.indexOf(char)+1)
return fn(str) if str?
fn
または生のjavascriptを好む場合: http://jsfiddle.net/snrobot/XsuQd/
これを使用して、次のような部分を構築できます。
var beforeQuote = _.substrBefore("'");
var hasQuote = beforeQuote("14' - €0.88"); // hasQuote = "14'"
var noQoute = beforeQuote("14 €0.88"); // noQuote = ""
または、文字列で直接呼び出すだけです
var beforeQuote = _.substrBefore("'", "14' - €0.88"); // beforeQuote = "14'"
私は意図的に結果に検索文字を残すことを選択して、補数 mixin と一致させましたsubstrAfter
(デモはhttp://jsfiddle.net/snrobot/SEAZr/です)。後者の mixin は、URL クエリを解析するためのユーティリティとして作成されました。場合によってはlocation.search
、先頭に?
.
私は「分割」を使用します:
let string = "one-two-three";
let um = string.split('-')[0];
let dois = string.split('-')[1];
let tres = string.split('-')[2];
document.write(tres) //3