在 C++ 中寻找与 Java 中的 Character.isIdentifierIgnorable()
对应的函数。基本上我必须用从它们派生的另一个字符串替换它们(这样信息就不会丢失)。
我在 Java 中的实现:
public static String replaceInvalidChar (String s) {
StringBuffer sb = new StringBuffer();
char[] characters = s.toCharArray();
for (char c : characters) {
if (Character.isIdentifierIgnorable(c)){
sb.append(String.format("\\u%04x", (int)c));
} else {
sb.append(c);
}
}
return sb.toString();
}
打算在 C++ 中做同样的事情,但为了替换字符,我需要先检测它们。有人可以帮助我吗?
最佳答案
根据我收集到的有关 Character.isIdentifierIgnorable()
工作原理的信息,以下内容可能对您有用:
std::wstring replaceInvalidChar(std::wstring const& s)
{
std::wostringstream sb;
for(auto c: s)
{
if(std::iswcntrl(c) && !std::iswspace(c))
sb << L"\\u" << std::hex << std::setw(4) << std::setfill(L'0') << int(c);
else
sb << wchar_t(c);
}
return sb.str();
}
关于c++ - 替换字符串 C++ 中的无效 XML unicode 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47027855/