如果ToUpper()不存在,你会怎么写?i18n和L10n的奖励积分
由此产生的好奇心:http://thedailywtf.com/Articles/The-Long-Way-toUpper.aspx
language-agnostic unicode localization internationalization toupper
toUpper c = chr (fromIntegral (towupper (fromIntegral (ord c))))
...
foreign import ccall unsafe "u_towupper"
towupper :: CInt -> CInt
Run Code Online (Sandbox Code Playgroud)
是什么意思chr,以及u_towupper?我对这foreign import ccall unsafe部分也很好奇.Haskell源实际上是否会发生变异,因此unsafe?
我有一个练习,要求使用一个函数将字符串的所有字符转换为大写
System.Char.ToUpper
Run Code Online (Sandbox Code Playgroud)
首先,我将字符串更改为char数组,并将数组更改为字符列表
let x = s.ToCharArray()
List.ofArray x
Run Code Online (Sandbox Code Playgroud)
接下来,我想我会使用List.iter迭代我的列表并在每个字符上使用System.Char.ToUpper函数.
List.iter (fun z -> (System.Char.ToUpper(z)))
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我得到一个错误'表达式应该有单位,但这里有char.' 我究竟做错了什么?它是逻辑或语法的缺陷吗?
试图让它改变解析的字符串段的第一个字母的大小写.因此,如果用户在txtName中输入"JOHN WAYNE DOE",那么它将显示"John Wayne Doe",我按照它在书中显示的方式输入它,但是消息框显示已解析的字符串,但是它已输入,因此在上面的示例中返回是"JOHN WAYNE DOE"我认为它是一个逻辑错误,因为我知道这样做很多只是不知道我在哪里犯了错误.
Dim name As String = txtName.Text
name = name.Trim
Dim names() As String = name.Split(CChar(" "))
Dim firstName As String = names(0)
Dim middleName As String = names(1)
Dim lastName As String = names(2)
Dim firstLetters1 As String = firstName.Substring(0, 1).ToUpper
Dim otherletters1 As String = firstName.Substring(1).ToLower
Dim firstLetters2 As String = middleName.Substring(0, 1).ToUpper
Dim otherletters2 As String = middleName.Substring(1).ToLower
Dim firstletters3 As String = lastName.Substring(0, 1).ToUpper
Dim otherletters3 As String = lastName.Substring(1).ToLower …Run Code Online (Sandbox Code Playgroud) 我有一个列表[String]任务是删除列表中的那些元素,它们有"q"或"p",然后用toUpper大写列表中的所有字母.
我尝试的是如下:
delAndUpper :: [String] -> [String]
delAndUpper myList = filter (\x -> not('p' `elem` x || 'q' `elem` x)) myList
Run Code Online (Sandbox Code Playgroud)
它正确地从列表中删除了不需要的元素,但由于toUpper的类型是Char,因此无法在此列表中应用toUpper.
我用地图试了一下它不起作用.
delAndUpper myList = map toUpper (filter (\x -> not('p' `elem` x || 'q' `elem` x)) myList)
Run Code Online (Sandbox Code Playgroud)
我知道,在这行代码中,toUpper获取一个列表作为值,因此它无法工作,但知道如何进入列表并将应用映射到上层.
请你帮助我好吗.
提前致谢!
问候
我做了一个toUpper()的实现.它不起作用100%.
代码:
char* toUpper(char* string)
{
char* sv = string;
while(*sv++ != '\0')
{
if( int(*sv) >= 97 || int(*sv) <= 122) //Only if it's a lower letter
*sv = char( *sv - 32);
}
return string;
}
Run Code Online (Sandbox Code Playgroud)
我知道低位字母的数字从97到122(ASCII格式),高位字母的数字从65到90.低位到高位字母之间正好有32个数字.所以我只是从较低的字符减去32.
我调用此函数的代码:
char h[] = "Whats up?";
cout << toUpper(h) << endl;
Run Code Online (Sandbox Code Playgroud)
我希望程序输出"WHATS UP?" 但相反,我得到了"什么".我做错了什么?
这是我写的代码.当我输入一个小写字符,如'a'时,它给我一个空白字符,但之后它运作良好.你能告诉我我做错了什么吗?谢谢.:)
#include <iostream>
#include <string>
using namespace std;
int main()
{
char letter;
cout << "You will be asked to enter a character.";
cout << "\nIf it is a lowercase character, it will be converted to uppercase.";
cout << "\n\nEnter a character. Press . to stop: ";
cin >> letter;
if(islower(letter))
{
letter = isupper(letter);
cout << letter;
}
while(letter != '.')
{
cout << "\n\nEnter a character. Press . to stop: ";
cin >> letter;
if(islower(letter))
{
letter = …Run Code Online (Sandbox Code Playgroud) 我有我的代码将案例从上部切换到下部,反之亦然.我也可以将它从上到下切换,从下到上.我的问题是; 有没有办法可以让它包括逗号或句号等字符.例如,如果我输入字符串"Hello,there".我会得到:"你好,在那里.","你好,那里"和"你好".我怎么能把它拿到我的第三个输出会说"你好,那里"的地方.
import java.util.*;
public class UpperLower2
{
public static void main(String[] args)
{
System.out.println("Enter in a sentence:");
Scanner input = new Scanner(System.in);
String sentence = input.nextLine();
System.out.println("All uppercase:" + sentence.toUpperCase());
System.out.println("All lowercase:" + sentence.toLowerCase());
System.out.println("Converted String:" + toggleString(sentence));
input.close();
}
public static String toggleString(String sentence)
{
String toggled = "";
for(int i=0; i<sentence.length(); i++)
{
char letter = sentence.charAt(i);
if(Character.isUpperCase(sentence.charAt(i)))
{
letter = Character.toLowerCase(letter);
toggled = toggled + letter;
}
else if(Character.isLowerCase(sentence.charAt(i)))
{
letter = Character.toUpperCase(letter);
toggled = toggled …Run Code Online (Sandbox Code Playgroud) 我需要将“h4ppy c0d1ng”转换为“H4PPY C0D1NG”。我是这门语言的初学者,但这是我的尝试(ubuntu i386 VirtualBox Mac)。我认为 int 21h 是错误的,除了程序在执行时不会完成或打印字符串:
section .text
GLOBAL _start
_start:
mov ecx, string
mov edx, length
call toUpper
call print
mov eax, 1
mov ebx, 0
int 80h
;String in ecx and length in edx?
;-------------------------
toUpper:
mov eax,ecx
cmp al,0x0 ;check it's not the null terminating character?
je done
cmp al,'a'
jb next_please
cmp al,'z'
ja next_please
sub cl,0x20
ret
next_please:
inc al
jmp toUpper
done: int 21h ; just leave toUpper (not working)
print: …Run Code Online (Sandbox Code Playgroud) 这是我的代码,我想将字符串中的一个字符转换为大写。
TCHAR sPassword[16] = L"password";
INT iChar = toupper(sPassword[4]);
sPassword[4] = iChar;
Run Code Online (Sandbox Code Playgroud)
它运行正常,但我收到警告:
warning C4244: '=': conversion from 'int' to '_Ty', possible loss of data
Run Code Online (Sandbox Code Playgroud)
我试过铸造iChar,(INT)但没有任何区别。