Skip to main content

backslash, regex and replaceAll function in java

The Java String class has several methods that allow you to perform an operation using a regular expression on that string. One is replaceAll(String regex, String replacement) that take strings as arguments. Java string use the literal string "\\" for single backslash and in regular expression, the "\\" matches a single backslash too. This make [the regular expression as java string] single backslash becomes "\\\\". e.g. If you have a string "c:\test\test2\" and want to change to "c:/test/test2/", your code should look like
class Bsl{ 
public static void main(String args[]){
String s="c:\\test\\test2";
String foreslash="/";
String regex="\\\\";
System.out.println(s.replaceAll(regex,foreslash));
}
}

result:
[poj@mail cronprog]$ java Bsl
c:/test/test2
[poj@mail cronprog]$

another example: the string "$" must be "\$" for java and again "\\$" for regex. So to change "$" to "/" .
class DS{
public static void main(String args[]){
String foreslash="/";
String ds="150$";
System.out.println(ds);
System.out.println(ds.replaceAll("$",foreslash));
System.out.println(ds.replaceAll("\\$",foreslash));
}
}

result:
[poj@mail cronprog]$ java DS
150$
150$/
150/
[poj@mail cronprog]$

note that the regex "$" will not work.

Comments

Anonymous said…
Many Thanks :D

Popular posts from this blog

Too many open files

Last week tomcat log file report many error about "Too many open files" when it has high traffic. Some in catalina_log say 2007-04-07 16:13:40 HttpProcessor[80][272] Starting background thread 2007-04-07 16:13:40 HttpConnector[80] accept: java.net.SocketException: Too many open files and here is from localhost_log 2007-04-07 16:13:40 StandardWrapperValve[myservlet]: Servlet.service() for servlet myservlet threw exception java.io.FileNotFoundException: /home/log/mylog_070407.log (Too many open files) This is because too many file descriptors're opened by tomcat. File descriptor can be limited in both system level and shell level. To check maximum number of fd in system type 'cat /proc/sys/fs/file-max'. In my case it is 65536(someone said it should set to 200000). Tomcat error when try to open socket number 272 so I think 65536 is ok for me for now. Anyway if u want to set it add 'fs.file-max = 200000' to /etc/sysctl.conf pnix@pnix-a7:~$ cat /proc/sys/fs/fil...

Setup MySQL with Ofbiz

Download ofbiz weekily build and extract it somewhere you want. From your ofbiz directory, edit file entityengine.xml in framework/entity/config add new datasources below localmysql datasource part <datasource name="custommysql" helper-class="org.ofbiz.entity.datasource.GenericHelperDAO" field-type-name="mysql" check-on-start="true" add-missing-on-start="true" check-pks-on-start="false" use-foreign-keys="true" join-style="ansi-no-parenthesis" alias-view-columns="false" drop-fk-use-foreign-key-keyword="true" table-type="InnoDB" character-set="latin1" collate="latin1_general_cs"> <read-data reader-name="seed"/> <read-data reader-name="seed-initial"/> ...

Shadow Text Effect on JLabel

I found the trick to create shawdow text on JLabel from java forum . Instead of use JLabel.setText() set string to JLabel, he create Image and get Graphics2D by Image.createGraphics(). Then use TextLayout draw overlapping string on that Graphics2D. example code int w = 500; int h = 120; Font font = new Font("Lucida Bright", Font.ITALIC, 72); String text = "Shadow Text"; BufferedImage image = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB); Graphics2D g = image.createGraphics(); adjustGraphics(g); //start off all white: g.setPaint(Color.WHITE); g.fillRect(0, 0, w, h); //draw "shadow" text: to be blurred next TextLayout textLayout = new TextLayout(text, font, g.getFontRenderContext()); g.setPaint(new Color(128,128,255)); textLayout.draw(g, 15, 105); g.dispose(); //blur the shadow: result is sorted in image...