উত্তর:
আপনি এটি চেষ্টা করতে পারেন
var mySubString = str.substring(
str.lastIndexOf(":") + 1,
str.lastIndexOf(";")
);
আপনি এটি ব্যবহার করে দেখতে পারেন:
var str = 'one:two;three';
str.split(':').pop().split(';')[0]; // returns 'two'
str.split(':').pop().split(';')[0]
ব্যবহারের চেয়ে দ্রুত হতে পারে.shift()
ব্যবহার split()
var s = 'MyLongString:StringIWant;';
var arrStr = s.split(/[:;]/);
alert(arrStr);
arrStr
দ্বারা সীমিত সমস্ত স্ট্রিং থাকবে :
বা ;
তাই প্রতিটি স্ট্রিং এর মাধ্যমে অ্যাক্সেস করবেfor-loop
for(var i=0; i<arrStr.length; i++)
alert(arrStr[i]);
\[(.*?)\]
---> সংক্ষেপে আপনাকে স্কোয়ার বন্ধনীগুলি থেকে পালাতে হবে, কারণ [] রেজেক্সে অক্ষর শ্রেণি নির্দেশ করে।
@ বাবাসাহেব গোসাভি উত্তরটি সঠিক, যদি আপনার সাবস্ট্রিংগুলির একটির উপস্থিতি (":" এবং ";") থাকে। তবে একবার আপনার একাধিক ঘটনা উপস্থিত হলে এটি সামান্য কিছুটা জটিল হয়ে উঠতে পারে।
একাধিক প্রকল্পে কাজ করার জন্য আমি যে সর্বোত্তম সমাধানটি নিয়ে এসেছি তা হ'ল কোনও জিনিসের ভিতরে চারটি পদ্ধতি ব্যবহার করা।
এত কথা বলা, কোডটি দেখুন:
var getFromBetween = {
results:[],
string:"",
getFromBetween:function (sub1,sub2) {
if(this.string.indexOf(sub1) < 0 || this.string.indexOf(sub2) < 0) return false;
var SP = this.string.indexOf(sub1)+sub1.length;
var string1 = this.string.substr(0,SP);
var string2 = this.string.substr(SP);
var TP = string1.length + string2.indexOf(sub2);
return this.string.substring(SP,TP);
},
removeFromBetween:function (sub1,sub2) {
if(this.string.indexOf(sub1) < 0 || this.string.indexOf(sub2) < 0) return false;
var removal = sub1+this.getFromBetween(sub1,sub2)+sub2;
this.string = this.string.replace(removal,"");
},
getAllResults:function (sub1,sub2) {
// first check to see if we do have both substrings
if(this.string.indexOf(sub1) < 0 || this.string.indexOf(sub2) < 0) return;
// find one result
var result = this.getFromBetween(sub1,sub2);
// push it to the results array
this.results.push(result);
// remove the most recently found one from the string
this.removeFromBetween(sub1,sub2);
// if there's more substrings
if(this.string.indexOf(sub1) > -1 && this.string.indexOf(sub2) > -1) {
this.getAllResults(sub1,sub2);
}
else return;
},
get:function (string,sub1,sub2) {
this.results = [];
this.string = string;
this.getAllResults(sub1,sub2);
return this.results;
}
};
var str = 'this is the haystack {{{0}}} {{{1}}} {{{2}}} {{{3}}} {{{4}}} some text {{{5}}} end of haystack';
var result = getFromBetween.get(str,"{{{","}}}");
console.log(result);
// returns: [0,1,2,3,4,5]
RangeError: Maximum call stack size exceeded
ব্যতিক্রম।
var s = 'MyLongString:StringIWant;';
/:([^;]+);/.exec(s)[1]; // StringIWant
আমি এই পদ্ধতিটি পছন্দ করি:
var str = 'MyLongString:StringIWant;';
var tmpStr = str.match(":(.*);");
var newStr = tmpStr[1];
//newStr now contains 'StringIWant'
আমি @tsds উপায় ব্যবহার করেছি তবে কেবল বিভক্ত ফাংশনটি ব্যবহার করে।
var str = 'one:two;three';
str.split(':')[1].split(';')[0] // returns 'two'
সতর্কতার শব্দ: যদি থ্রির কোনও ":" স্ট্রিতে অ্যারির '1' সূচকটি অ্যাক্সেস করে ত্রুটি ছুঁড়ে দেয়! str.split ( ':') [1]
সুতরাং অনিশ্চয়তা থাকলে @ এসটিএসএস উপায় নিরাপদ
str.split(':').pop().split(';')[0]
function substringBetween(s, a, b) {
var p = s.indexOf(a) + a.length;
return s.substring(p, s.indexOf(b, p));
}
// substringBetween('MyLongString:StringIWant;', ':', ';') -> StringIWant
// substringBetween('MyLongString:StringIWant;;', ':', ';') -> StringIWant
// substringBetween('MyLongString:StringIWant;:StringIDontWant;', ':', ';') -> StringIWant
আপনি নিজের এক্সট্রাক্টরের একটি 'সংকলিত' সংস্করণ ফিরিয়ে দিতে উচ্চতর অর্ডার ফাংশনটি ব্যবহার করতে পারেন, এটি দ্রুততর।
রেগেক্সেস সহ এবং একবার বন্ধ হয়ে গেলে রেজেক্সগুলি সংকলন করে জাভাস্ক্রিপ্টের ম্যাচটি সমস্ত ম্যাচ ফিরবে।
এটি আমাদের চিহ্নিতকারী হিসাবে আমাদের যা ব্যবহার করেছে তা সরিয়ে ফেলেছে (অর্থাত্ {{
:) এবং আমরা এর জন্য স্ট্রিংয়ের দৈর্ঘ্য স্লাইস সহ ব্যবহার করতে পারি।
function extract([beg, end]) {
const matcher = new RegExp(`${beg}(.*?)${end}`,'gm');
const normalise = (str) => str.slice(beg.length,end.length*-1);
return function(str) {
return str.match(matcher).map(normalise);
}
}
একবার সংকলন করুন এবং একাধিকবার ব্যবহার করুন ...
const stringExtractor = extract(['{','}']);
const stuffIneed = stringExtractor('this {is} some {text} that can be {extracted} with a {reusable} function');
// Outputs: [ 'is', 'text', 'extracted', 'reusable' ]
বা একক সময় ব্যবহার ...
const stuffIneed = extract(['{','}'])('this {is} some {text} that can be {extracted} with a {reusable} function');
// Outputs: [ 'is', 'text', 'extracted', 'reusable' ]
জাভাস্ক্রিপ্ট এর দেখুন replace
ফাংশনটি দেখুন তবে প্রতিস্থাপন যুক্তিটির জন্য একটি ফাংশন ব্যবহার করুন (উদাহরণস্বরূপ আপনি যদি একটি মিনি টেম্পলেট ইঞ্জিন (স্ট্রিং ইন্টারপোলেশন) করছেন ... লড্যাশ.জেট আপনি চাইলে মানগুলি পেতে সহায়তা করতে পারেন) প্রতিস্থাপন ? ...
আমার উত্তরটি অনেক দীর্ঘ তবে এটি কারও সাহায্য করতে পারে!
আপনি এটি ব্যবহার করতে পারেন ...
function extractText(str,delimiter){
if (str && delimiter){
var firstIndex = str.indexOf(delimiter)+1;
var lastIndex = str.lastIndexOf(delimiter);
str = str.substring(firstIndex,lastIndex);
}
return str;
}
var quotes = document.getElementById("quotes");
// " - represents quotation mark in HTML
<div>
<div>
<span id="at">
My string is @between@ the "at" sign
</span>
<button onclick="document.getElementById('at').innerText = extractText(document.getElementById('at').innerText,'@')">Click</button>
</div>
<div>
<span id="quotes">
My string is "between" quotes chars
</span>
<button onclick="document.getElementById('quotes').innerText = extractText(document.getElementById('quotes').innerText,'"')">Click</button>
</div>
</div>
সাবস্ট্রিংগুলিতে স্ট্রিং পান (1 টিরও বেশি অক্ষর রয়েছে)
function substrInBetween(whole_str, str1, str2){
strlength1 = str1.length;
return whole_str.substring(
whole_str.indexOf(str1) + strlength1,
whole_str.indexOf(str2)
);
}
দ্রষ্টব্য আমি এর indexOf()
পরিবর্তে ব্যবহার করি lastIndexOf()
যাতে এটি str স্ট্রিংগুলির প্রথম উপস্থিতিগুলি পরীক্ষা করে
strlength1
ভেরিয়েবলের উদ্দেশ্য কী ? পরিবর্তে মানটি ইনলাইন ব্যবহার করা উচিত। এছাড়াও আপনি কোন কেস স্টাইলটি ব্যবহার করছেন তা পরিষ্কার নয় । strlength1
- কোন স্টাইল, whole_str
- সাপের কেস
জাভাস্ক্রিপ্ট ব্যবহার করে দুটি চরিত্রের মধ্যে সাবস্ট্রিং পাওয়ার চেষ্টা করুন।
$("button").click(function(){
var myStr = "MyLongString:StringIWant;";
var subStr = myStr.match(":(.*);");
alert(subStr[1]);
});
@ থেকে নেওয়া jQuery সহ দুটি অক্ষরের মধ্যে স্ট্রাস্টিং সন্ধান করুন
JQuery ব্যবহার :
get_between <- function(str, first_character, last_character) {
new_str = str.match(first_character + "(.*)" + last_character)[1].trim()
return(new_str)
}
দড়ি
my_string = 'and the thing that ! on the @ with the ^^ goes now'
ব্যবহার :
get_between(my_string, 'that', 'now')
ফলাফল :
"! on the @ with the ^^ goes
আমি তৈরি একটি ছোট ফাংশন যা এর মধ্যে স্ট্রিংটি ধরে ফেলতে পারে এবং একটি নির্দিষ্ট সূচকটি ধরতে বেশিরভাগ মিলিত শব্দগুলি এড়িয়ে যেতে পারে (.চ্ছিকভাবে)।
এছাড়াও, সেটিং start
করতে false
স্ট্রিংয়ের শুরু ব্যবহার করবে, এবং সেটিং end
করতে false
স্ট্রিংয়ের শেষ প্রান্ত ব্যবহার করবে।
আপনি pos1
যে start
পাঠ্যটি ব্যবহার করতে চান তার অবস্থানটিতে সেট করুন , 1
এর প্রথম উপস্থিতিটি ব্যবহার করবেstart
pos2
যেমনটি একই কাজ করে pos1
তবে এর জন্য end
এবং কেবল তার পরে 1
প্রথম ঘটনাটি ব্যবহার করবে , আগের ঘটনাগুলি উপেক্ষা করা হবে।end
start
end
start
function getStringBetween(str, start=false, end=false, pos1=1, pos2=1){
var newPos1 = 0;
var newPos2 = str.length;
if(start){
var loops = pos1;
var i = 0;
while(loops > 0){
if(i > str.length){
break;
}else if(str[i] == start[0]){
var found = 0;
for(var p = 0; p < start.length; p++){
if(str[i+p] == start[p]){
found++;
}
}
if(found >= start.length){
newPos1 = i + start.length;
loops--;
}
}
i++;
}
}
if(end){
var loops = pos2;
var i = newPos1;
while(loops > 0){
if(i > str.length){
break;
}else if(str[i] == end[0]){
var found = 0;
for(var p = 0; p < end.length; p++){
if(str[i+p] == end[p]){
found++;
}
}
if(found >= end.length){
newPos2 = i;
loops--;
}
}
i++;
}
}
var result = '';
for(var i = newPos1; i < newPos2; i++){
result += str[i];
}
return result;
}