コンテンツ部分がパターン (大文字と小文字を区別しない) に一致する u_c_pages の最初のビットの URL 部分を返すにはどうすればよいですか? ページが見つからない場合は、空の文字列が返されます。
たとえば、以下の例で
var pg = [ "|www.cam.ac.uk|Cambridge University offers degree programmes and world class research." , "!www.xyz.ac.uk!An great University" , "%www%Yet another University" ]
var pt = "alt";
url1(pages,"ALT") returns "www.xyz.ac.uk"
url1(pages,"xyz") returns ""
これが私がこれまでやってきたことです。現在、セパレーター「|」のみを除外します しかし、(正規表現に頼らずに)シンボルをチェックしたい...
function url1_m1(u_c_pages, pattern) {
// we create an array to store all the arrays that have the seperator "|"
// this has been done for situations in which there are invalid arrays lacking the seperator "|"
// if we find the seperator "|" within an array we also need to know about the position of "|" in the array element
var seperator = [];
var seperatorPos = [];
if (pattern) {
// looping through the u_c_pages to find occurences of seperator "|"
// the found variable is initialised with a value of true
// if we do not find the seperator "|" in an array element then we set the found variable to false
for (var i = 0; i < u_c_pages.length; i++) {
var found = true;
if ((u_c_pages[i].indexOf("|")) < 0) {
found = false;
}
// whereas if we do find a seperator "|" in an array element
// we create a new array element in seperator containing the page index
// we create a new array element containing the position of the seperator "|"
else {
seperator[seperator.length] = i;
seperatorPos[seperatorPos.length] = (u_c_pages[i].indexOf("|"));
}
}
// if no arrays with the seperator "|" have been found then we end the program
if (seperator.length == 0) {
return ("");
}
// otherwise we initialise variable found2
// we loop through the pages with the seperator "|" as we have stored the index of all the pages in array seperator
// using the stored index of in array seperator we check the content (after the seperator) for the pattern
// we also jump the seperator "|" so it is not returned as one of the results
else var found2 = ""; {
for (var j = 0; j < seperator.length; j++)
// if the the pattern has been found then we extract the url (before the seperator)
// break the loop once it has been found
// return URL to user
{
if (u_c_pages[seperator[j]].substring(seperatorPos[j] + 1, u_c_pages[j].length).toLowerCase().indexOf(pattern.toLowerCase()) >= 0) {
found2 = (u_c_pages[j].substring(0, seperatorPos[j]));
break;
}
}
return (found2)
}
}
else {
return ("");
}
}
alert(url1_m1(pg, pt));