Today I'll show you how to do a very trivial task in challenge solving - string manipulation. With Java everything is easy :)
- Get the length of a string:
int len = str.length();- Access the nth character of a string:
char c = str.charAt(index);Note that in Java indices start at 0.
- Create a String from a char array:
String s = new String(charArray);- Convert a String to a char array:
char[] c = str.toCharArray()- Create a String from a byte array:
String s = new String(byteArray)- Convert a String to a byte array:
byte[] b = str.getBytes();- Get a substring of a string:
String sub1 = str.substring(beginIndex);- Find the first occurence of a character or a substring:
String sub2 = str.substring(beginIndex, endIndex);
int index1 = str.indexOf(c);If there is no occurence, the result is -1.
int index2 = str.indexOf(str2);
int index3 = str.indexOf(c, fromIndex);
- Compare 2 strings: strings are objects, so you can't compare strings with ==. Instead you can use:
boolean b1 = str1.equals(str2);- Concatenate 2 strings:
int b2 = str1.compareTo(str2);
int b3 = str1.equalsIgnoreCase(str2);
String s1 = str1 + str2;But when you are concatenating many strings repeatedly you should consider using StringBuffer or StringBuilder for better performance.
String s2 = str1.concat(str2);
- Test if a string contains another string:
boolean b = str1.contains(str2);- Check if str2 is at the beginning of str1:boolean b = str1.startsWith(str2);- Check if str2 is at the end of str1:boolean b = str1.endsWith(str2);- Convert a string to uppercase/lowercase:String str2 = str1.toUpperCase();- Replace characters in a string:
String str3 = str1.toLowerCase();// Replace all a's with b'sRegular expressions are so powerful but yet so huge that they will be covered in a later topic :P
String str2 = str1.replace('a', 'b');
// Replace all hello's with hola's
String str3 = str1.replace("hello", "hola");
// Replace all digits with 0s
String str4 = str1.replaceAll("[0-9]", "0");
- Check if a string matches a pattern:// Check if str is a hexadecimal representation- Convert from String to primitives:
boolean b = str.matches("[0-9A-Fa-f]+");boolean b1 = Boolean.valueOf(str);- Convert from primitives to String:
int i1 = Integer.valueOf(str);
double d1 = Integer.valueOf(str);
// The parseXXX methods are more powerful
boolean b2 = Boolean.parseBoolean(str);
int i2 = Integer.parseInt(str);
double d2 = Double.parseDouble(str);
// Binary conversion
int i3 = Integer.parseInt(str, 2);
// Octal conversion
int i4 = Integer.parseInt(str, 8);
// Hex conversion
int i5 = Integer.parseInt(str, 16);// boolean b = true;- There's also this very powerful method:
String str1 = Boolean.toString(b);
// int i = 1337;
String str2 = Integer.toString(i);
// Binary conversion
String str3 = Integer.toString(i, 2);
String str4 = Integer.toBinaryString(i);
// Octal conversion
String str5 = Integer.toString(i, 8);
String str6 = Integer.toOctalString(i);
// Hex conversion
String str7 = Integer.toString(i, 16);
String str8 = Integer.toHexString(i);
// double d = 1.337;
String str9 = Double.toString(d);// The result will be: "true 1337 53a 1.337"For a complete format string reference see http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html
String str1 = String.format("%b %d %x %1.3f", true, 1337, 1338, 1.337);
- Reverse a string:String str2 = new StringBuffer(str1).reverse().toString();Probably more will come later when I have the time :P
No comments:
Post a Comment