key llGetNumberOfNotecardLines(string name)

Returns number of lines in the notecard name via the dataserver event. (Cast the value returned by the dataserver to an integer.)
The key returned is a query id for identifying the dataserver reply.
If name is not a valid notecard, the object will say, “Couldn’t find notecard NAME” where “NAME” is the name of the invalid notecard. The dataserver event will not be triggered, and there will be no message returned. llGetNumberOfNotecardLines will still return a query id.
If name refers to a notecard containing embedded inventory items, dataserver will still be triggered, though it will not return the actual number of lines, but rather, the End-Of-File constant. (EOF)
Empty notecards, even ones that have been renamed from “New Note”, will not be able to be read, as they don’t “exist” in the same way that other assets do. Notecards can have nothing in them, but they can’t just be “New Note”, renamed. There needs to actually be something saved.
This call can often be avoided by checking if the data requested by llGetNotecardLine is EOF to determine when the end of the notecard has been reached.
Note: This function delays the script for 0.1 seconds.

default {
    state_entry() {
    dataserver(key queryid, string data) {
        llSay(0, "This notecard has " + data + " lines."); // note how the returned value is already a string
        // if you want to use it as a number, you will have to cast it to an integer:
        integer    lines = (integer)data;
Q: What happens if I create a notecard, don’t edit and save it, but place it in the object and then try to run llGetNumberOfNotecardLines on it?
A: The same thing as if you passed an invalid name: the object will say, “Couldn’t find notecard NAME” where “NAME” is the name of the invalid notecard. Nothing will be returned to the script, and it will be as if llGetNumberOfNotecardLines was never called.
Q: So what do I do then? How does my script know what to do if there’s no way to tell it whether or not the notecard is empty?
A: Try adding a timeout using a timer, or use a second object containing a listener to reply with a message indicating the notecard was empty or not present.

Also see llGetNotecardLine.