Skip to main content
gautams4173
May 2, 2023
Solved

Fetch Name from URL

  • May 2, 2023
  • 16 replies
  • 0 views

Hi,

I have an URL of the format : https://www.google.com/<unique_id>_<fileName>_<remaining url>

Now my requirement is I want to fetch the filename out of the URL ... the first part will always remain the same  i.e.

first is https ... till .com/

then comes an unique identifier 

then followed by '_'

then followed by filename

then followed by '_' and the remaining URL 

Can anyone help me fetch the filename ? 

Best answer by sanchitg0002

Try this

a!localVariables(
  local!url: "https://www.google.com/1234_xyz_pqr_abc.png?_",
  local!start: find("_", local!url),
  local!end: find("?", local!url),
  right(
    left(local!url, local!end - 1),
    local!end - local!start - 1
  )
)

16 replies

stewart.burchell
May 2, 2023

You can use fn!split() to break the url string up into an array of sub-strings. Assuming the rules you've provided hold true the <filename> will be in the 2nd item in the resulting array:

fn!split(ri!url, "_")[2]

gautams4173
May 2, 2023

The problem here is the filename can contain '_' .. so it will split based on that too 

stewart.burchell
May 2, 2023

Ok, so that was one of the "rules" in the problem statement that you'd neglected to mention. Are there other "rules" that might help guide you to a solution? For example, is the length and/or format of the value of "unique_id" deterministic? Will the initial part of the URL always end ".com" ? Anything predictable/deterministic about the value of the "remaining_url" ?

May 2, 2023

a!localVariables(
  local!url: "https://www.google.com/1234_xyz.png_",
  extract(local!url, "_", "_")
)

gautams4173
May 2, 2023

Hi,

The file name can contain '_'

stefanhelzle0001
Brainy
May 2, 2023

As we do not know what the remaining URL looks like, this becomes difficult.

Did you consider a regex expression?

tushark6475
May 2, 2023

Hi Gautam, below described logic will work for you.

a!localVariables(
  local!temp: split(
    "https://www.google.com/_testFile_Second_",
    "_"
  ),
  local!file: if(
    length(local!temp) > 3,
    joinarray(
      a!forEach(
        items: local!temp,
        expression: if(
          contains({ 1, count(local!temp) }, fv!index),
          null(),
          fv!item
        )
      ),
      "_"
    ),
    local!temp[2]
  ),
  local!file
)




gautams4173
May 2, 2023

Thanks [emoticon:33306c418930400bac28808410f8ac8b]