Η τεμπελιά είναι η μητέρα όλων των κακών συνηθειών,
στην τελική όμως είναι μια μητέρα και πρέπει να τη σεβόμαστε.
Europe/Erasmus: Mobilise Yourself – Studying and Working in the EU – Logo Competition
Total Voters: 6
On a project we were recently working on, some legacy C
code was producing a (void*) voidBuffer
accompanied by its size.
The rest of the project was in C++
and we needed to convert the (void*) voidBuffer
to a std::vector<unsigned char>
vector.
To do so, we used the following code:
//First cast the (void *) voidBuffer to an (unsigned char *) to implicitly get the element size (1 Byte each) const unsigned char *charBuffer = (unsigned char *) voidBuffer; //Then we create the vector (named vectorBuffer) by copying the contents of charBuffer to the vector std::vector<unsigned char> vectorBuffer(charBuffer, charBuffer + length);
Converting a (void*) buffer to a std::vector
The following Java snippet removes all non-digit
characters from a String.
Non-digit characters are any characters that are not in the following set [0, 1, 2, 3, 4 ,5 ,6 ,7 ,8, 9]
.
myString.replaceAll("\\D", "");
For a summary of regular-expression constructs and information on the character classes supported by Java pattern visit the following link.
The \\D
pattern that we used in our code is a predefined character class for non-digit characters. It is equivalent to [^0-9]
that negates the predefined character class for digit characters [0-9]
.
The following snippet allows you to check if a String in Java starts with a specific character (or a specific prefix) that you are looking for and remove it.
To keep the number of lines small, we used the Java ?:
ternary operator, which defines a conditional expression in a compact way.
Then, to quickly check if the first character(s) is the one we are looking for before removing it we used the String.startsWith().
To compute the number of characters to remove we used the String.length() on the needle.
Finally, to strip the leading character(s) we used String.substring() whenever the prefix matched.
final String needle = "//"; final int needleSize = needle.length(); String haystack = ""; haystack = haystack.startsWith(needle) ? haystack.substring(needleSize) : haystack; System.out.print(haystack); haystack = "apple"; haystack = haystack.startsWith(needle) ? haystack.substring(needleSize) : haystack; System.out.println(haystack); haystack = "//banana"; haystack = haystack.startsWith(needle) ? haystack.substring(needleSize) : haystack; System.out.println(haystack);
The above code will result in the following:
apple banana
final String needle = "a"; final int needleSize = needle.length(); String haystack = "banana"; haystack = haystack.replace(needle,""); System.out.println(haystack);
The above code will result in the following:
bnn
final String needle = "a"; final int needleSize = needle.length(); String haystack = "banana"; haystack = haystack.replaceFirst(needle,""); System.out.println(haystack);
The above code will result in the following:
bnana