Let's say I need to split string like this:
Input string: "My. name. is Bond._James Bond!" Output 2 strings:
I tried this:
int lastDotIndex = inputString.LastIndexOf(".", System.StringComparison.Ordinal); string firstPart = inputString.Remove(lastDotIndex); string secondPart= inputString.Substring(lastDotIndex + 1, inputString.Length - firstPart.Length - 1);
Can someone propose more elegant way?
To split a string on the last occurrence of a substring:, use the lastIndexOf() method to get the last index of the substring and call the slice() method on the string to get the portions before and after the substring you want to split on.
strrchr() — Locate Last Occurrence of Character in String The strrchr() function finds the last occurrence of c (converted to a character) in string . The ending null character is considered part of the string . The strrchr() function returns a pointer to the last occurrence of c in string .
Python provides a method that split the string from rear end of the string. The inbuilt Python function rsplit() that split the string on the last occurrence of the delimiter. In rsplit() function 1 is passed with the argument so it breaks the string only taking one delimiter from last.
To split a JavaScript string only on the first occurrence of a character, call the slice() method on the string, passing it the index of the character + 1 as a parameter. The slice method will return the portion of the string after the first occurrence of the character.
C# 8 introduced a new feature called ranges and indices, which offer a more concise syntax for working with strings.
string s = "My. name. is Bond._James Bond!"; int idx = s.LastIndexOf('.'); if (idx != -1) { Console.WriteLine(s[..idx]); // "My. name. is Bond" Console.WriteLine(s[(idx + 1)..]); // "_James Bond!" }
This is the original answer that uses the string.Substring(int, int)
method. It's still OK to use this method if you prefer.
string s = "My. name. is Bond._James Bond!"; int idx = s.LastIndexOf('.'); if (idx != -1) { Console.WriteLine(s.Substring(0, idx)); // "My. name. is Bond" Console.WriteLine(s.Substring(idx + 1)); // "_James Bond!" }
You can also use a little bit of LINQ. The first part is a little verbose, but the last part is pretty concise :
string input = "My. name. is Bond._James Bond!"; string[] split = input.Split('.'); string firstPart = string.Join(".", split.Take(split.Length - 1)); //My. name. is Bond string lastPart = split.Last(); //_James Bond!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With