#1 : 15/12-21 21:46 Ervin
Posts: 17
|
Is there an easier way to swap a filename such as:
"Justin Bieber & Ariana Grande" "Madonna & Britney Spears" to "Ariana Grande & Justin Bieber" "Britney Spears & Madonna" where it's sorted by each artist's name alphabetically. I use swap, but then have to manually look at each filename to make sure it's sorted alphabetically by name 1 and name 2. Otherwise, it will swap filenames that are sorted correctly. |
#2 : 16/12-21 14:41 David Lee
Posts: 1125
|
Use a Script method with the following code:
names = item.name.match(/([^&]*?) *& *(.*)/); if (names) { names = names.slice(1,3).sort(); return names[0] + ' & ' + names[1]; } Spaces before and after "&" are optional. |
#3 : 16/12-21 19:31 Ervin
Posts: 17
|
Reply to #2:
Wow ... that was quick. Thank you so much! I don't know how to write scripts, but it works perfectly!... |
#4 : 16/12-21 20:00 Ervin
Posts: 17
|
Reply to #2:
BTW...Long shot here... but is there a script that can sort multiple names (more than two names) in a title in alphabetical order? |
#5 : 17/12-21 09:21 David Lee
Posts: 1125
|
Reply to #4:
If all your names are separated by "&" (eg "Ariana Grande & Justin Bieber & Britney Spears & Madonna"): names = item.name.split(/ *& */).sort(); newName = names[0]; for (j=1; j<names.length; j++) newName += ' & ' + names[j]; return newName; However if your list is in themore conventional form "Ariana Grande, Justin Bieber, Britney Spears & Madonna" use the following code: names = item.name.split(/ *[,&] */).sort(); newName = names[0]; for (j=1; j<names.length-1; j++) newName += ', ' + names[j]; if (names.length>1) newName += ' & ' + names[j]; return newName; In each case spaces before and after the separators are optional and filenames with only a single name will not be changed. |
#7 : 18/12-21 12:18 David Lee
Posts: 1125
|
Reply to #4:
If all your names are separated by "&" (eg "Ariana Grande & Justin Bieber & Britney Spears & Madonna"): names = item.name.split(/ *& */).sort(); newName = names[0]; for (j=1; j<names.length; j++) newName += ' & ' + names[j]; return newName; However if your list is in themore conventional form "Ariana Grande, Justin Bieber, Britney Spears & Madonna" use the following code: names = item.name.split(/ *[,&] */).sort(); newName = names[0]; for (j=1; j<names.length-1; j++) newName += ', ' + names[j]; if (names.length>1) newName += ' & ' + names[j]; return newName; In each case spaces before and after the separators are optional and filenames with only a single name will not be changed. |
#8 : 21/12-21 20:47 Ervin
Posts: 17
|
Reply to #5:
Wow... Thanks David! |