X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fjvcard%2Ftui%2FStringUtils.java;h=569b06cf3b60edf4f15587c3d9e80e2baaec81b3;hb=b9f192ed5290f3263f60dc5a2dc9fd754eead958;hp=3f5d22b2eb283a6a6fa43253affe3b0410408ee0;hpb=ce822a7cd8ff95a031e477e37d23c114228cc5b6;p=jvcard.git diff --git a/src/be/nikiroo/jvcard/tui/StringUtils.java b/src/be/nikiroo/jvcard/tui/StringUtils.java index 3f5d22b..569b06c 100644 --- a/src/be/nikiroo/jvcard/tui/StringUtils.java +++ b/src/be/nikiroo/jvcard/tui/StringUtils.java @@ -2,6 +2,9 @@ package be.nikiroo.jvcard.tui; import java.text.Normalizer; import java.text.Normalizer.Form; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.regex.Pattern; import com.googlecode.lanterna.gui2.LinearLayout.Alignment; @@ -9,7 +12,6 @@ import com.googlecode.lanterna.gui2.LinearLayout.Alignment; public class StringUtils { static private Pattern marks = Pattern .compile("[\\p{InCombiningDiacriticalMarks}\\p{IsLm}\\p{IsSk}]+"); - static private Pattern notAscii = Pattern.compile("[^\\p{ASCII}]+"); /** * Fix the size of the given {@link String} either with space-padding or by @@ -122,9 +124,50 @@ public class StringUtils { input = Normalizer.normalize(input, Form.NFKC); if (!allowUnicode) { - input = notAscii.matcher(input).replaceAll(""); + StringBuilder builder = new StringBuilder(); + for (int index = 0; index < input.length(); index++) { + char car = input.charAt(index); + // displayable chars in ASCII are in the range 32<->255, + // except DEL (127) + if (car >= 32 && car <= 255 && car != 127) { + builder.append(car); + } + } + input = builder.toString(); } return input; } + + /** + * Convert between time in milliseconds to {@link String} in a "static" way + * (to exchange data over the wire, for instance). + * + * @param time + * the time in milliseconds + * + * @return the time as a {@link String} + */ + static public String fromTime(long time) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return sdf.format(new Date(time)); + } + + /** + * Convert between time as a {@link String} to milliseconds in a "static" + * way (to exchange data over the wire, for instance). + * + * @param time + * the time as a {@link String} + * + * @return the time in milliseconds + */ + static public long toTime(String display) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + return sdf.parse(display).getTime(); + } catch (ParseException e) { + return -1; + } + } }