Java String- How to get a part of package name in android? -
its getting string value between 2 characters. has many questions related this. like:
how string between 2 characters?
extract string between 2 strings in java
and more. felt quiet confusing while dealing multiple dots in string , getting value between 2 dots.
i have got package name :
au.com.newline.myact i need value between "com." , next "dot(.)". in case "newline". tried
pattern pattern = pattern.compile("com.(.*)."); matcher matcher = pattern.matcher(beforetask); while (matcher.find()) { int ct = matcher.group(); i tried using substrings , indexof also. couldn't intended answer. because package name in android varies different number of dots , characters, cannot use fixed index. please suggest idea.
as know (based on .* part in regex) dot . special character in regular expressions representing character (except line separators). make dot represent dot need escape it. can place \ before it, or place inside character class [.].
also part parenthesis (.*) need select proper group index in case 1.
so try
string beforetask = "au.com.newline.myact"; pattern pattern = pattern.compile("com[.](.*)[.]"); matcher matcher = pattern.matcher(beforetask); while (matcher.find()) { string ct = matcher.group(1);//remember regex finds strings, not int system.out.println(ct); } output: newline
if want 1 element before next . need change greedy behaviour of * quantifier in .* reluctant adding ? after like
pattern pattern = pattern.compile("com[.](.*?)[.]"); // ^ another approach instead of .* accepting non-dot characters. can represented negated character class: [^.]*
pattern pattern = pattern.compile("com[.]([^.]*)[.]"); if don't want use regex can use indexof method locate positions of com. , next . after it. can substring want.
string beforetask = "au.com.newline.myact.modelact"; int start = beforetask.indexof("com.") + 4; // +4 since want skip 'com.' part int end = beforetask.indexof(".", start); //find next `.` after start index string resutl = beforetask.substring(start, end); system.out.println(resutl);
Comments
Post a Comment