codec2_talkie/codec2talkie/src/main/java/com/radio/codec2talkie/tools/TextTools.java

67 wiersze
1.8 KiB
Java

package com.radio.codec2talkie.tools;
import android.util.Log;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.Objects;
public class TextTools {
public static String addZeroWidthSpaces(String text) {
return text.replaceAll(".(?!$)", "$0\u200b");
}
public static int countChars(String text, char ch) {
int count = 0;
for (int i = 0; i < text.length(); i++) {
if (text.charAt(i) == ch) {
count++;
}
}
return count;
}
public static String stripNulls(String text) {
int pos = text.indexOf('\0');
if (pos == -1) return text;
return text.substring(0, pos);
}
public static byte[] stripNulls(byte[] data) {
int i = 0;
for (byte b : data) {
if (b == 0) break;
i++;
}
if (i == data.length) return data;
return Arrays.copyOf(data, i);
}
public static String getString(ByteBuffer byteBuffer) {
StringBuilder result = new StringBuilder();
if (byteBuffer.position() > 0) {
byteBuffer.flip();
while (byteBuffer.hasRemaining()) {
char c = (char)byteBuffer.get();
if (c == '\n') {
break;
}
result.append(c);
}
byteBuffer.compact();
}
return result.toString();
}
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}
}